質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2000閲覧

laravel5.2でRouteModelBinding後、NotFoundHttpException in RouteCollection.php line 161:がでる

tomosuzu

総合スコア6

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/01/07 04:25

###前提・実現したいこと
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'); }); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。なんとも単純なことでした。
routes.php

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']);

こちらの{id}を{article}に変更したら正常に動作しました。

目を通してくださった方々ありがとうございます。

投稿2018/01/07 05:15

tomosuzu

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問