Laravel Backpack CRUD не работает

Я выполнил этот учебник, чтобы настроить пример CRUD. Но я не могу заставить его работать, и я не знаю почему. вот мой код

SomeitemCrudController.php

<?php

namespace App\Http\Controllers\Admin;

use Backpack\CRUD\app\Http\Controllers\CrudController;

// VALIDATION: change the requests to match your own file names if you need form validation
use App\Http\Requests\SomeitemRequest as StoreRequest;
use App\Http\Requests\SomeitemRequest as UpdateRequest;

class SomeitemCrudController extends CrudController
{

    public function setUp()
    {
        /*
        |--------------------------------------------------------------------------
        | BASIC CRUD INFORMATION
        |--------------------------------------------------------------------------
        */
        $this->crud->setModel("App\Models\Someitem");
        $this->crud->setRoute("admin/someitem");
        $this->crud->setEntityNameStrings('someitem', 'someitems');

        /*
        |--------------------------------------------------------------------------
        | BASIC CRUD INFORMATION
        |--------------------------------------------------------------------------
        */

        $this->crud->setFromDb();

        // $this->crud->setColumns(['nama']);
        $this->crud->addField([
            'nama' => 'Nama',
            'keterangan' => 'Keterangan',
            'harga' => 'Harga'
        ]);
    }

    public function store(StoreRequest $request)
    {
        $redirect_location = parent::storeCrud();
        return $redirect_location;
    }

    public function update(UpdateRequest $request)
    {
        $redirect_location = parent::updateCrud();
        return $redirect_location;
    }
}

модель, Someitem.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;

class SomeItem extends Model
{
    use CrudTrait;
    //

    protected $table = 'someitem';
    protected $fillable = ['nama', 'keterangan', 'harga'];
    public $timestamps = true;
}

запрос, SomeitemRequest.php

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class SomeitemRequest extends \Backpack\CRUD\app\Http\Requests\CrudRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return \Auth::check();
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            // 'name' => 'required|min:5|max:255'
        ];
    }

    /**
     * Get the validation attributes that apply to the request.
     *
     * @return array
     */
    public function attributes()
    {
        return [
            //
        ];
    }

    /**
     * Get the validation messages that apply to the request.
     *
     * @return array
     */
    public function messages()
    {
        return [
            //
        ];
    }
}

а затем маршруты

<?php

Route::group([
    'prefix' => config('backpack.base.route_prefix', 'admin'),
    'middleware' => ['admin'],
    'namespace' => 'Admin'
], function() {
    CRUD::resource('pelayanan', 'Admin\PelayananCrudController');
    Route::get('/test', function () {
        return view('welcome');
    });
});

Я могу получить доступ к http://localhost/myapp/public/admin/test успешно, но не могу получить доступ к http://localhost/myapp/public/admin/someitem, он всегда возвращает ошибку 500

Я новичок в laravel (и PHP), любая помощь приветствуется. Благодарность!


person Rahadian Kumang    schedule 19.03.2017    source источник
comment
Почему вы добавляете имя поля в свой контроллер ... Поскольку вы сделали setFromDb (), он будет продублирован ...   -  person Serge    schedule 19.03.2017


Ответы (1)


Я хочу сделать свой ответ очень подробным, поэтому я начал его с самого начала. Версия для рюкзака CRUD, которую я использую, - ^ 3.2.

  1. посмотрите этот файл your-project/vendor/backpack/crud/src/CrudServiceProvider.php Да, я знаю, что имя класса не CRUD, а CrudServiceProvider. Это потому, что у них есть register метод в CrudServiceProvider, и в нем они используют $loader->alias('CRUD', \Backpack\CRUD\CrudServiceProvider::class);, что делает CRUD псевдоним класса CrudServiceProvider. Чтобы узнать больше о том, как это работает внутри, прочтите Laravel Поставщики услуг, контейнер службы и Фасады.

  2. Итак, мы выяснили, что CRUD::resource() на самом деле означает CrudServiceProvider::resource(), поэтому переходите к этому методу, там вы найдете только одну строку return new CrudRouter($name, $controller, $options);, насколько я знаю (если я ошибаюсь, поправьте меня), она называется Заводской шаблон / метод. Итак, перейдите к конструктору CrudRouter (, и у вас нет файлов для просмотра, и поэтому вы получаете ошибку 500.

    Если у вас есть еще вопросы, просто задавайте.

    person Vladyslav Startsev    schedule 19.03.2017
    comment
    Я использую рюкзак / базу: ^ 1.1, рюкзак / crud: ^ 4.0 и сталкиваюсь с проблемой не найденного маршрута, я проверил с помощью команды artisan route: list, но маршрут рюкзака отсутствует в списке - person Imran Qamer; 22.11.2019