Я проследил все руководство по laracasts и попытался сделать все точно так же, как они это делают там. , только я поменял имя модели, таблицы и контроллера.
В какой-то момент что-то с Route::bind() перестало работать и из-за этого теперь, когда я попытайтесь получить доступ к маршруту с помощью подстановочного знака, представление появится, но без данных.
Это мой routes.php< /p>
Код: Выделить всё
Route::bind('singers', function($slug, $route){
return App\Singer::whereSlug($slug)->first();
});
Route::resource('singers', 'SingerController', [
'names' => [
'index' => 'singers_index',
'show' => 'singers_show',
'edit' => 'singers_edit',
'update' => 'singers_update',
'create' => 'singers_create',
'store' => 'singers_store',
'destroy' => 'singers_destroy',
],
]);
Код: Выделить всё
namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use Illuminate\Http\Request;
use App\Http\Requests\CreateSingerRequest;
use App\Singer;
class SingerController extends Controller {
public $restful = true;
public function __construct(Singer $singer){
$this->singer = $singer;
}
public function index()
{
$singers = $this->singer->orderBy('id', 'DESC')->get();
return view('singers.list',compact('singers'));
}
public function show(Singer $singer){
return view('singers.show', compact('singer'));
}
public function edit(Singer $singer){
return view('singers.edit', compact('singer'));
}
public function update(Singer $singer, Request $request){
$singer->fill($request->input());
$singer->save();
return view('singers.show', compact('singer'));
}
public function create(){
return view('singers.new');
}
public function store(Singer $singer, CreateSingerRequest $request){
$singer->create($request->all());
return redirect()->route('singers_index');
}
public function destroy(Singer $singer){
$singer->delete();
return redirect()->route('singers_index');
}
}
Как я уже сказал, я вижу в них представления, теги и любой другой текст, но не те данные, которые передаю, кроме индекса. функции, поскольку на самом деле я выполняю поиск Eloquent в самой функции.
Теперь вот фрагмент моего show.blade.php
Код: Выделить всё
Full Name: [/b] {{ $singer->name.' '.$singer->lastname }}[b]
Age: [/b] {{ $singer->age }}[b]
Country: [/b] {{ $singer->country }}[b]
Bio: [/b] {!! nl2br($singer->bio) !!}
{!! HTML::linkRoute('singers_edit', 'Update', [$singer->slug], ['class' => 'btn btn-primary']) !!}
{!! Form::open(['method'=>'DELETE', 'route'=>['singers_destroy', $singer->slug]]) !!}
{!! Form::submit('Delete', ['class'=>'btn btn-danger']) !!}
{!! Form::close() !!}
Код: Выделить всё
return view('singers.show',compact('singer'));
Код: Выделить всё
return view('singers.show')->with('singer',$singer);
- индекс -> хорошо.
- show -> не будет показывать никаких данных.
- create -> действительно работает, и новая запись сохраняется.
- изменить -> возникает ошибка, поскольку подстановочный знак не отправляется на
контроллер.
Пути
- индекс (GET): /singers
- показать (GET): /singers/{singers
- создать ( GET): /singers/create
- store (POST): /singers
- изменить (GET): /singers/{singers}/edit
- обновить (PATCH): /singers/{singers
- уничтожить (DELETE): /singers/{singers
И, конечно, перед первой косой чертой приходит myserver/myproject/public
Подробнее здесь: https://stackoverflow.com/questions/264 ... -routebind
Мобильная версия