Laravelのリンクhrefを介してIDを渡し、そのページを/ projects/display/2のように表示することは可能ですか?.
私はこのリンクを持っています:
<td><a href="{{ url('projects/display', $projects->id) }}" class="btn btn-info">View</a></td>
/ projects/display/2としてリンクにホバーするとidを表示します。しかし、リンクをクリックするたびに、次のエラーメッセージが表示されます。
Sorry, the page you are looking for could not be found.
Projects/displayというビュー設定に加えて、ルートとコントローラーがあります。
ルート:
<?php
Route::group(['middleware' => ['web']], function (){
Route::get('/', 'PagesController@getIndex');
Route::get('/login', 'PagesController@getLogin');
Auth::routes();
Route::get('/home', 'HomeController@index');
Route::get('/projects/display', 'ProjectsController@getDisplay');
Route::resource('projects', 'ProjectsController');
});
コントローラ:
<?php
namespace App\Http\Controllers;
use App\project;
use App\Http\Requests;
use Illuminate\Http\Request;
use Session;
class ProjectsController extends Controller
{
public function index()
{
}
public function create()
{
return view('projects.create');
}
public function store(Request $request)
{
$this->validate($request, array(
'name' => 'required|max:200',
'description' => 'required'
));
$project = new project;
$project->name = $request->name;
$project->description = $request->description;
$project->save();
Session::flash('success', 'The project was successfully created!');
return redirect()->route('projects.show', $project->id);
}
public function show()
{
$project = Project::all();
return view('projects.show')->withProject($project);
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
//
}
public function getDisplay($id){
$project = Project::find($id);
return view('projects/display')->withProject($project);
}
}
ルートを次のように変更する必要があります:
Route::get('/projects/display/{id}', 'ProjectsController@getDisplay');
次に、次のURLを生成します。
{{ url('projects/display/'.$projects->id) }}
以下のようなルートを書くと、
Route::get('/projects/display/{projectId}', 'ProjectsController@getDisplay')->name('displayProject');
Hrefで「displayProject」という名前を使用して、IDをArrayとして渡すことができます。
<td><a href="{{ route('displayProject', ['projects' => $projects->id]) }}" class="btn btn-info">View</a></td>
あなたが探しているのは、パラメータ化されたルートです。それらの詳細については、こちらをご覧ください https://laravel.com/docs/5.3/routing#required-parameters