Я пытаюсь добавить возможность отвечать на комментарии к сообщению, но получаю это:
CommentRepliesController@createReply is not defined.
Добавление ответа на сообщение через PostCommentsController@store работает отлично. Но когда я пытаюсь добавить ответ на комментарий, вернувшись к сообщению или перейдя непосредственно к comment/reply в URL-адресе, я получаю указанную выше ошибку.
Вот мой маршрут:
Route::group(['middleware'=>'auth'], function(){
Route::resource('comment/reply', 'CommentRepliesController@createReply');
});
Вот мой CommentRepliesController@createReply:
public function createReply(Request $request){
$user = Auth::user();
if ($user->photo){
$data = [
'comment_id' => $request->comment_id,
'author' => $user->name,
'email' => $user->email,
'photo' => $user->photo->file,
'body' => $request->body
];
} else{
$data = [
'comment_id' => $request->comment_id,
'author' => $user->name,
'email' => $user->email,
'body' => $request->body
];
}
CommentReply::create($data);
$request->session()->flash('reply_message', 'Your reply has been submitted
and is awaiting moderation.');
return redirect()->back();
}
И вот мой post.blade.php:
@extends('layouts.blog-post')
@section('content')
<!-- Blog Post -->
<!-- Title -->
<h1>{{$post->title}}</h1>
<!-- Author -->
<p class = "lead">
by <a href = "#">{{$post->user->name}}</a>
</p>
<hr>
<!-- Date/Time -->
<p><span class = "glyphicon glyphicon-time"></span>
Posted on {{$post->created_at->diffForHumans()}}</p>
<hr>
<!-- Preview Image -->
<img class = "img-responsive" src = "{{$post->photo->file}}" alt = "">
<hr>
<!-- Post Content -->
<p class = "lead">
<p>{{$post->body}}</p>
<hr>
@if (Session::has('comment_message'))
{{session('comment_message')}}
@endif
<!-- Blog Comments -->
@if (Auth::check())
<!-- Comments Form -->
<div class = "well">
<h4>Leave a Comment:</h4>
{!! Form::open(['method'=>'POST', 'action'=>'PostCommentsController@store'])!!}
<input type = "hidden" name = "post_id" value = "{{$post->id}}"/>
<!--<input type = "hidden" name = "_token" value = "{{ csrf_token() }}">-->
{!! csrf_field() !!}
<div class = "form-group">
{!! Form::label('body','Body: ') !!}
{!! Form::textarea('body', null, ['class'=>'form-control', 'rows'=>3]) !!}
</div>
<div class = "form-group">
{!! Form::submit('Post Comments', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
@endif
<hr>
<!-- Posted Comments -->
@if (count($comments) > 0)
@foreach($comments as $comment)
<!-- Comment -->
<div class = "media">
<a class = "pull-left" href = "#">
<img height = "64" width = "64" class = "media-object" src = "{{$comment->photo}}" alt = "">
</a>
<div class = "media-body">
<h4 class = "media-heading">{{$comment->author}}
<small>{{$comment->created_at->diffForHumans()}}</small>
</h4>
<p>{{$comment->body}}</p>
<!-- Nested Comment -->
<div class = "media">
<a class = "pull-left" href = "#">
<img class = "media-object" src = "http://placehold.it/400x400" alt = "">
</a>
<div class = "media-body">
<h4 class = "media-heading">Nested Start Bootstrap
<small>August 25, 2014 at 9:30 PM</small>
</h4>
Cras sit amet nibh libero, in gravida nulla.
Nulla vel metus scelerisque ante sollicitudin
commodo. Cras purus odio, vestibulum in vulputate
at, tempus viverra turpis. Fusce condimentum nunc
ac nisi vulputate fringilla. Donec lacinia congue
felis in faucibus.
</div>
</div>
<!-- End Nested Comment -->
@if (Session::has('reply_message'))
<p class = "bg-danger">{{session('reply_message')}}</p>
@endif
<!--Comment Reply Form-->
{!! Form::open(['method'=>'POST', 'action'=>'CommentRepliesController@createReply'])!!}
<div class = "form-group">
<input type = "hidden" name = "comment_id" value = "{{comment_id}}"/>
{!! Form::label('body','Body: ') !!}
{!! Form::textarea('body', null, ['class'=>'form-control', 'rows'=>1]) !!}
</div>
<div class = "form-group">
{!! Form::submit('Reply', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
<!--End of Comment Reply Form-->
</div>
</div>
@endforeach
@endif
@stop
Заранее спасибо.
У вас здесь ошибка, друг мой Route :: resource ('comment / reply', 'CommentRepliesController @ createReply'); измените его на Route :: post ('комментарий / ответ', 'CommentRepliesController @ postReply');






Laravel resource routing assigns the typical "CRUD" routes to a controller with a single line of code.
Route::resource автоматически использует операции «CRUD» в вашем контроллере ресурсов. См. Документы здесь
Если вы хотите использовать определенную функцию внутри вашего контроллера, не используйте Route::resource. Используйте любой метод, который хотите. Например, если ваш метод - POST, используйте Route::post следующим образом:
Route::group(['middleware'=>'auth'], function(){
Route::post('comment/reply', 'CommentRepliesController@createReply');
});
Попробуйте
php artisan route:list, чтобы получить список всех определенных вами маршрутов.