функция () не выходит в laravel 5.6 - PullRequest
0 голосов
/ 29 августа 2018

Я использую ресурсный маршрут. А теперь я хотел бы добавить еще один маршрут:

Route::resource('discussion', 'DiscussionsController');
Route::post('/discussion/reply/{id}',[
    'use' => 'DiscussionsController@reply',
    'as' => 'discussion.reply'
]);`

А вот функция ответа,

public function reply($id)
{
    $discussion = Discussion::find($id);

    $reply = Reply::create([
        'user_id'=>Auth::id(),
        'discussion_id' => $id,
        'content'=> \request()->reply
    ]);

    return redirect()->back();
}

Это блейд, который перенаправляет на функцию сохранения.

<div class="card">

    <div class="card-body">
        Leave a reply

        <form method="post" action="{{route('discussion.reply', ['id'=> $discussion->id])}}">
            {{csrf_field()}}
            <div class="form-group">
                <textarea name="reply" class="form-control"></textarea>
            </div>

            <div class="form-group">
                <button type="submit" class="btn btn-primary ">Reply</button>
            </div>
        </form>
    </div>

В чем проблема?

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Используете ли вы промежуточное ПО в маршруте? Если да, убедитесь, что вы используете ' использует ключ ', а не ' использует '. Пример:

Route::get('foo/bar/{id}',['middleware'=>'auth','uses'=>'FooController@show']);

Или вы можете просто передать имя контроллера и функцию в качестве второго параметра без массива на основе значения ключа.

0 голосов
/ 29 августа 2018

Я могу ошибаться, но с первого взгляда я бы сказал, что это потому, что у вас есть use вместо uses для вашего Route.

Попробуйте изменить

'use' => 'DiscussionsController@reply',

до

'uses' => 'DiscussionsController@reply',

Во-вторых, вам не нужен \ с \request()->reply.

Измените его на request()->reply или даже request('reply')

0 голосов
/ 29 августа 2018

Попробуйте изменить порядок маршрутов

Вместо

Route::resource('discussion', 'DiscussionsController');
Route::post('/discussion/reply/{id}',[
    'use' => 'DiscussionsController@reply',
    'as' => 'discussion.reply'
]);

Используйте это

Route::post('/discussion/reply/{id}',[
    'use' => 'DiscussionsController@reply',
    'as' => 'discussion.reply'
]);
Route::resource('discussion', 'DiscussionsController');
...