Метод App \ Http \ Controllers \ CommentsController :: store не существует.- Laravel 5.8 - PullRequest
0 голосов
/ 04 июля 2019

Я получаю эту ошибку всякий раз, когда пишу комментарий в своей новостной статье или разделе. Я не могу решить эту ошибку. Я пробовал несколько методов, но я не могу решить. У кого-нибудь есть идеи, как от этого избавиться? Пожалуйста, скажите мне. Спасибо

CommentsController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Comment;
use App\News;
use App\Graph;
use Validator;
use Session;




class CommentsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, $news_id)
    {
        //
        $this->validate($request, array(
            'name'=> 'required | max:255',
            'email'=> 'required| email | max:255',
            'comment'=> 'required | min:5'
        ));

        $news = News::find($news_id);

        $comment = new Comment();

        $comment->name = $request->name;
        $comment->email = $request->email;
        $comment->comment = $request->comment;
        $comment->approved = true;
        $comment->news()->associate($news);

        $comment->save();

        Session::flash('success', "Comment Added! ");

        return redirect()->route('article/',[$news->id]);



    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/



Route::get('/adminlogin', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('/adminlogin', 'Auth\LoginController@login');


// Registration Routes...
Route::get('register/', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register/', 'Auth\RegisterController@register');






//CRUD ROUTE COLLECTIVE
Route::resource('users','UserController');

//CRUD COLLECTIVE NEWS
Route::resource('news', 'NewsController');

//CRUD COLLECTIVE ROADMAP
Route::resource('roadmap', 'RoadmapController');

//dashboard
Route::get('/home', 'HomeController@index')->name('home');


Route::get('/', 'GraphController@index');

//for user logout
Route::get('/logout', 'HomeController@logout');




//show individual news
Route::group(['middleware'=>['web']], function(){
    Route::get('/article/{id}', 'NewsController@showNews')->name('article');

});





//comments
Route::post('comments/{news_id}', ['uses' => 'CommentsController@store ', 'as' => 'comments.store']);
// Route::post('comments/{news_id}','CommentsController@store');





Comment.php Модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{

    protected $fillable = [
        'name', 'email', 'comment',
    ];
    //
    public function news(){
        return $this->belongsTo('App\News');
    }
}

News.php Модель


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class news extends Model
{
    //
    protected $fillable = [
        'title', 'subtitle', 'body', 'image',
    ];


    public function comments(){
        return $this->hasMany('App\Comment');
    }
}

seenews.blade.php - (я разместил код только в моей форме, потому что код в этом файле слишком длинный)

 <div id="comments" class="comments-area">
                    <div id="respond" class="comment-respond">
                      <h3 id="reply-title" class="comment-reply-title">
                        <div class="leave-a-comment-title">Leave a <span>comment </span></div>

                      </h3>

                    {!! Form::open(['route'=>['comments.store', $news->id], 'method'=>'POST']) !!}

                        <div class="row">
                          <div class="col-md-4 col-12 form-group">
                           {!! Form::label('name', 'Name:') !!}
                           {!! Form::text('name', null, ['class'=>'form-control'])!!}
                          </div>
                          <div class="col-md-4 col-12 form-group">
                            {{Form::label('email', 'Email:') }}
                            {!!Form::text('email', null, ['class'=>'form-control'])!!}
                          </div>
                        </div>
                        <div class="row">
                          <div class="col-12 form-group">
                            {!! Form::label('comment', 'Comment:') !!}
                            {!! Form::textarea('comment', null, ['class'=>'form-control'])!!}


                          </div>
                        </div>
                        <div class="form-submit">
                          {!!Form::submit ('Add Comment', ['class'=>'btn btn-warning'])!!}
                        </div>

                      {!!Form::close()!!}
                    </div>
                  </div>

              </div>

Список маршрутов

+--------+-----------+------------------------+-----------------+-------------------------------------------------------------------+--------------+
|        | GET|HEAD  | /                      |                 | App\Http\Controllers\GraphController@index                        | web          |
|        | POST      | adminlogin             |                 | App\Http\Controllers\Auth\LoginController@login                   | web,guest    |
|        | GET|HEAD  | adminlogin             | login           | App\Http\Controllers\Auth\LoginController@showLoginForm           | web,guest    |
|        | GET|HEAD  | api/user               |                 | Closure                                                           | api,auth:api |
|        | GET|HEAD  | article/{id}           | article         | App\Http\Controllers\NewsController@showNews                      | web          |
|        | POST      | comments/{news_id}     | comments.store  | App\Http\Controllers\CommentsController@store                     | web          |
|        | GET|HEAD  | home                   | home            | App\Http\Controllers\HomeController@index                         | web          |
|        | GET|HEAD  | logout                 |                 | App\Http\Controllers\HomeController@logout                        | web          |
|        | GET|HEAD  | news                   | news.index      | App\Http\Controllers\NewsController@index                         | web          |
|        | POST      | news                   | news.store      | App\Http\Controllers\NewsController@store                         | web          |
|        | GET|HEAD  | news/create            | news.create     | App\Http\Controllers\NewsController@create                        | web          |
|        | DELETE    | news/{news}            | news.destroy    | App\Http\Controllers\NewsController@destroy                       | web          |
|        | GET|HEAD  | news/{news}            | news.show       | App\Http\Controllers\NewsController@show                          | web          |
|        | PUT|PATCH | news/{news}            | news.update     | App\Http\Controllers\NewsController@update                        | web          |
|        | GET|HEAD  | news/{news}/edit       | news.edit       | App\Http\Controllers\NewsController@edit                          | web          |
|        | GET|HEAD  | register               | register        | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest    |
|        | POST      | register               |                 | App\Http\Controllers\Auth\RegisterController@register             | web,guest    |
|        | POST      | roadmap                | roadmap.store   | App\Http\Controllers\RoadmapController@store                      | web          |
|        | GET|HEAD  | roadmap                | roadmap.index   | App\Http\Controllers\RoadmapController@index                      | web          |
|        | GET|HEAD  | roadmap/create         | roadmap.create  | App\Http\Controllers\RoadmapController@create                     | web          |
|        | GET|HEAD  | roadmap/{roadmap}      | roadmap.show    | App\Http\Controllers\RoadmapController@show                       | web          |
|        | PUT|PATCH | roadmap/{roadmap}      | roadmap.update  | App\Http\Controllers\RoadmapController@update                     | web          |
|        | DELETE    | roadmap/{roadmap}      | roadmap.destroy | App\Http\Controllers\RoadmapController@destroy                    | web          |
|        | GET|HEAD  | roadmap/{roadmap}/edit | roadmap.edit    | App\Http\Controllers\RoadmapController@edit                       | web          |
|        | GET|HEAD  | test                   |                 | App\Http\Controllers\GraphController@test                         | web          |
|        | POST      | users                  | users.store     | App\Http\Controllers\UserController@store                         | web          |
|        | GET|HEAD  | users                  | users.index     | App\Http\Controllers\UserController@index                         | web          |
|        | GET|HEAD  | users/create           | users.create    | App\Http\Controllers\UserController@create                        | web          |
|        | DELETE    | users/{user}           | users.destroy   | App\Http\Controllers\UserController@destroy                       | web          |
|        | PUT|PATCH | users/{user}           | users.update    | App\Http\Controllers\UserController@update                        | web          |
|        | GET|HEAD  | users/{user}           | users.show      | App\Http\Controllers\UserController@show                          | web          |
|        | GET|HEAD  | users/{user}/edit      | users.edit      | App\Http\Controllers\UserController@edit                          | web          |
+--------+-----------+------------------------+-----------------+-------------------------------------------------------------------+--------------+

1 Ответ

1 голос
/ 04 июля 2019

В вашем файле маршрутизации web.php есть опечатка.Строка 61. Удалите лишний пробел из 'CommentsController@store ', и все будет в порядке.

Route::post('comments/{news_id}', ['uses' => 'CommentsController@store ', 'as' => 'comments.store']);

становится

Route::post('comments/{news_id}', ['uses' => 'CommentsController@store', 'as' => 'comments.store']);

Вторая проблема связана с перенаправлением в конце действия.Там нет маршрута под названием article/.Удалить косую черту.

return redirect()->route('article/',[$news->id]);

становится

return redirect()->route('article', [$news->id]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...