Laravel 未定义变量控制器

Laravel undefined variable Controller

我的 BusinessController 问题已经存在很长时间了。不这样写的东西是不可能理解的。请帮我改正错误;我觉得我做了很多)

我的问题:

我的数据库business_table.php

class BusinessTable extends Migration
{
    public function up()
    {
        Schema::create('businesses', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('mail');
            $table->string('web-site');
            $table->timestamps();
        });
    }
    
    public function down()
    {
        Schema::drop('business');
    }
}

我的控制器:BusinessController.php

<?php

    namespace App\Http\Controllers;
    use \App\Models\Business;
    use Illuminate\Http\Request;

    class BusinessController extends Controller
    {
    public function index()
    {
    $business = \App\Models\Business::all();
    return view('business', compact('business'));
    }
    public function createbusiness()
    {
    return view('/createbusiness');
    }
    public function store()
    {
    return view('/business');
    }
    public function create()
    {
    return view('business.create');
    }
    public  function store()
    {
    $business = new Business();
    $business->title = request()->input('title');
    $business->description = request()->input('description');
    $business->save();
    return redirect('/business');

    }
    }

我的模特:Business.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Business extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'business';
}

我的查看文件:business.blade.php

@extends('layouts.layout')
@section('title')Бізнес@endsection
@section ('main_content')
    <h1>Бизнес</h1>
    <p>
    @foreach ($business as $singleBusiness)
        <li>{{ $singleBusiness->title}}</li>>
        @endforeach
        </p>
@endsection

我的创作business.blade.php:

<p>It works</p>
<form method="post" action="/business">
    {{ csrf_field() }}
    <div>
        <input type="text" name="title" value="" placeholder="title">
    </div>
    <div>
        <textarea type="text" name="description" value="" placeholder="description"></textarea>
    </div>
    <div>
        <button type="sumbit">Sumbit</button>
    </div>
</form>

我的web.php

<?php

    use App\Http\Controllers\UserController;
    use Illuminate\Support\Facades\Route;

    /*
    |--------------------------------------------------------------------------
    | Web Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register web routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group, which
    | contains the "web" middleware group. Now create something great!
    |
    */

    Route::get('/welcome', 'App\Http\Controllers\MainController@welcome');
    Route::get('/users', 'App\Http\Controllers\MainController@users');
    Route::get('/business', 'App\Http\Controllers\BusinessController@index');
    Route::post('/business', 'App\Http\Controllers\BusinessController@store');
    Route::get('/projects', 'App\Http\Controllers\ProjectsController@index');
    Route::post('/projects', 'App\Http\Controllers\ProjectsController@store');
    Route::get('/projects/create', 'App\Http\Controllers\ProjectsController@create');
    Route::get('/business/create', 'App\Http\Controllers\BusinessController@createbusiness');
    Auth::routes();

    Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

我的MainController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MainController extends Controller
{
    public function welcome()
    {
    return view('/welcome');
    }
    public function users()
    {
    return view('users');
    }
}

my problem image

你必须添加路线

Route::get('/business', 'App\Http\Controllers\BusinessController@index');

您没有使用索引方法调用业务控制器,它通过了:

return view('business', compact('business'));

企业对企业的观点。

更新

删除导致冲突的路由:

Route::get('/business', 'App\Http\Controllers\MainController@business');

对于每条路径(如“/business”)和动词(如 get/post),只应存在一条路线。

更新 2

天哪,你的 BusinessController 中有 2 个存储函数,删除一个。

作为您的使用

Route::get('/business','App\Http\Controllers\MainController@business');

在你的MainController.php

public function business()
{
    $business = \App\Models\Business::all();
    return view('business', compact('business'));
}

这里你错过了提供 $business 数据和加载 business.blade.php