【问题标题】:Laravel undefined variable ControllerLaravel 未定义变量控制器
【发布时间】:2021-04-02 01:10:49
【问题描述】:

长期以来,我的 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

我的 createbusiness.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>

我的网页.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\MainController@business'); 也上传您的MainController 代码
  • 好的,我更新了代码

标签: laravel laravel-blade laravel-8 laravel-controller


【解决方案1】:

你必须添加路线

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

您没有使用 index 方法调用业务控制器,该方法通过:

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

企业对企业视图。

更新

删除这条导致冲突的路由:

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

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

更新 2

天哪,您的 BusinessController 中有 2 个存储功能,删除一个。

【讨论】:

  • 好的,谢谢,现在我的错误看起来像这样 ))))) imgur.com/a/QbOsTRk
  • 我无法加载图像你能在你的问题中写下错误消息和堆栈跟踪吗?
  • 无法重新声明 App\Http\Controllers\BusinessController::store()
  • 好的,我只删除 public function store() { return view('/business'); } 是吗?
  • 好的,非常感谢,我来自乌克兰,我的英语有其他问题,如果我很愚蠢,我很抱歉
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多