###前提・実現したいこと
Lara帳:はじめてのLaravel5.1(32)を参考に勉強しています。
PHP自体初心者の者です。
こちらのサイトはlaravel5.1ですが私はlaravel5.2を使用しています。
RouteModelBindingを行った後、記事の閲覧・編集・更新・削除ができなくなりました。
idが取得できていない?のでしょうか。
似たような質問がこちらの掲示板にあったので見たのですが、そちらはlaravel5.1を使用している方だったため、暗黙のモデルバインディング自体がなくできなくなっているようでした。
調べたところ、下記のようなものをよく見たのですが、この形を使用しなくてはいけないのでしょうか。ご教授お願いします。
Route::get('/user/{user}', function (App\User $user) { // });
###発生している問題・エラーメッセージ
NotFoundHttpException in RouteCollection.php line 161:
###該当のソースコード
routes.php
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ //名前を指定 Route::get('articles', ['as' => 'articles.index', 'uses' => 'ArticlesController@index']); Route::get('articles/create', ['as' => 'articles.create', 'uses' => 'ArticlesController@create']); Route::get('articles/{id}', ['as' => 'articles.show', 'uses' => 'ArticlesController@show']); Route::post('articles', ['as' => 'articles.store', 'uses' => 'ArticlesController@store']); Route::get('articles/{id}/edit', ['as' => 'articles.edit', 'uses' => 'ArticlesController@edit']); Route::patch('articles/{id}', ['as' => 'articles.update', 'uses' => 'ArticlesController@update']); Route::delete('articles/{id}', ['as' => 'articles.destroy', 'uses' => 'ArticlesController@destroy']); //ユーザー登録とログイン認証 Route::get('auth/login', 'Auth\AuthController@getLogin'); Route::post('auth/login', 'Auth\AuthController@postLogin'); Route::get('auth/logout', 'Auth\AuthController@logout'); // Registration routes... Route::get('auth/register', 'Auth\AuthController@getRegister'); Route::post('auth/register', 'Auth\AuthController@postRegister'); Route::auth(); Route::get('/home', 'HomeController@index');
ArticlesController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; use App\Http\Requests\ArticleRequest; use Carbon\Carbon; class ArticlesController extends Controller { public function __construct(){ $this->middleware('auth',['except'=>['index','show']]); } public function index(){ //$articles = Article::all(); $articles = Article::orderBy('created_at', 'desc')->published()->get(); //$articles=Article::latest('published_at')->published()->get(); return view('articles.index',compact('articles')); } public function show(Article $article){ return view('articles.show', compact('article')); } public function create(){ return view('articles.create'); } public function store(ArticleRequest $request){ // Article::create($request->all()); \Auth::user()->articles()->create($request->all()); \Session::flash('flash_message', '記事を作成しました。'); return redirect()->route('articles.index'); } public function edit(Article $article){ return view('articles.edit',compact('article')); } public function update(Article $article,ArticleRequest $request){ $article->update($request->all()); \Session::flash('flash_message', '記事を更新しました。'); return redirect()->route('articles.show',[$article->id]); } public function destroy(Article $article){ $article->delete(); \Session::flash('flash_message','記事を削除しました。'); return redirect()->route('articles.index'); } }
RouteServiceProvider.php
<?php namespace App\Providers; use Illuminate\Routing\Router; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; class RouteServiceProvider extends ServiceProvider { /** * This namespace is applied to your controller routes. * * In addition, it is set as the URL generator's root namespace. * * @var string */ protected $namespace = 'App\Http\Controllers'; /** * Define your route model bindings, pattern filters, etc. * * @param \Illuminate\Routing\Router $router * @return void */ public function boot(Router $router) { // parent::boot($router); $router->model('article','App\Models\Article'); // $router->get('articles/{article}', function(App\Models\Article $article) { // // // }); } /** * Define the routes for the application. * * @param \Illuminate\Routing\Router $router * @return void */ public function map(Router $router) { $this->mapWebRoutes($router); // } /** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. * * @param \Illuminate\Routing\Router $router * @return void */ protected function mapWebRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php'); }); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。