Проблемы с Route::bind() в Laravel 5Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблемы с Route::bind() в Laravel 5

Сообщение Anonymous »

У меня возникла небольшая проблема с использованием Laravel 5.
Я проследил все руководство по 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',
],
]);
Это некоторые фрагменты моего SingerController

Код: Выделить всё

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');
}
}
Сейчас. Причина, по которой я пытаюсь связать переменную «singers» в Routes.php, заключается в том, что они делают это в видео, и таким образом код в контроллере становится короче. И это действительно работало. А потом я просто добавил функцию уничтожения, и все это перестало работать.
Как я уже сказал, я вижу в них представления, теги и любой другой текст, но не те данные, которые передаю, кроме индекса. функции, поскольку на самом деле я выполняю поиск 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 -> действительно работает, и новая запись сохраняется.
  • изменить -> возникает ошибка, поскольку подстановочный знак не отправляется на
    контроллер.
Изменить< /strong>

Пути

  • индекс (GET): /singers
  • показать (GET): /singers/{singers
  • создать ( GET): /singers/create
  • store (POST): /singers
  • изменить (GET): /singers/{singers}/edit
  • обновить (PATCH): /singers/{singers
  • уничтожить (DELETE): /singers/{singers
Оставить Имейте в виду, что подстановочный знак {singers} на самом деле в каждом случае представляет собой слизень $singer->slug, но функция Route::bind() не позволяет мне называть его так, как я хочу.
И, конечно, перед первой косой чертой приходит myserver/myproject/public

Подробнее здесь: https://stackoverflow.com/questions/264 ... -routebind
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»