Контроллер неопределенной переменной Laravel

У меня были проблемы с моим 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');
    }
}

моё проблемное изображение


person Mineral    schedule 23.12.2020    source источник
comment
Route::get('/business', 'App\Http\Controllers\MainController@business'); также загрузите свой MainController код   -  person Kamlesh Paul    schedule 23.12.2020
comment
хорошо, я обновил код   -  person Mineral    schedule 23.12.2020


Ответы (2)


вы должны добавить маршрут

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

о боже, у вас есть 2 функции хранения в вашем BusinessController, удалите одну.

person Abilogos    schedule 23.12.2020
comment
хорошо, спасибо, теперь моя ошибка выглядит так ))))) imgur.com/a/QbOsTRk - person Mineral; 23.12.2020
comment
я не могу загрузить изображение, можете ли вы написать сообщение об ошибке и трассировку стека в своем вопросе? - person Abilogos; 23.12.2020
comment
Невозможно повторно объявить App\Http\Controllers\BusinessController::store() - person Mineral; 23.12.2020
comment
он сказал, что у вас есть два одинаковых маршрута. вы уверены, что у вас есть это с Route::get и Business Store с почтой ?? - person Abilogos; 23.12.2020
comment
удалить другой маршрут Get '/ business', поскольку я обновил ответ - person Abilogos; 23.12.2020
comment
Невозможно повторно объявить App\Http\Controllers\BusinessController::store() ту же ошибку ( - person Mineral; 23.12.2020
comment
вы удалили MainController '/business'? - person Abilogos; 23.12.2020
comment
Можете ли вы обновить свой ответ новыми маршрутами? - person Abilogos; 23.12.2020
comment
хорошо, я обновил все файлы - person Mineral; 23.12.2020
comment
отредактируйте свой третий маршрут до точки index действия. извините, это была моя ошибка - person Abilogos; 23.12.2020
comment
замените это на это: Route::get('/business', 'App\Http\Controllers\BusinessController@index'); - person Abilogos; 23.12.2020
comment
хорошо, я заменяю, ошибка такая же (я обновил web.php - person Mineral; 23.12.2020
comment
вы кешировали свои маршруты? попробуйте «маршрут php artisan: очистить» - person Abilogos; 23.12.2020
comment
сделал но ничего не изменилось - person Mineral; 23.12.2020
comment
как мой обновленный ответ, пожалуйста, удалите одну функцию - person Abilogos; 23.12.2020
comment
вы удалили это из контроллера: public function store() { return view('/business'); } ? - person Abilogos; 23.12.2020
comment
хорошо, я удаляю Route::post('/business', 'App\Http\Controllers\BusinessController@store'); и функция strore на контроллере. теперь это работает - person Mineral; 23.12.2020
comment
нет, я имею в виду, что у вас есть 2 функции с одинаковыми именами в BusinessController - person Abilogos; 23.12.2020
comment
хорошо, я удаляю только публичные функции store() { return view('/business'); } да ? - person Mineral; 23.12.2020
comment
да, и вы можете вернуть свой магазин - person Abilogos; 23.12.2020
comment
ок, большое спасибо, я из Украины, у меня другие проблемы с английским, извините, если я был глуп - person Mineral; 23.12.2020
comment
нет, все в порядке, брат. - person Abilogos; 23.12.2020
comment
оууу я забыл спросить почему когда я звоню в $business-›save(); в artisan tinker результатом является ошибка: PHP Error: Call to undefined method stdClass::save() в коде Psy Shell в строке 1 - person Mineral; 23.12.2020
comment
проверьте это stackoverflow.com/a/59583974/9287628 - person Abilogos; 23.12.2020

как вы используете

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

person Kamlesh Paul    schedule 23.12.2020