Reputation: 917
Im trying to build a dynamic link with a view page (blade) with Laravel 5.3.
My approach is:
<a href=" {{ URL::to('articles') }}/{{ $article->id}}/edit">Edit></a>
that will output the right url with my base url and some other slug: http://mydomain/articles/23/edit
Where "23" is my article's id.
This works but I wonder if there is a cleaner way to do that?
many thanks
Upvotes: 3
Views: 21120
Reputation: 3315
You can use named routes for this
// Your route file
URL::get('articles/{articleId}/edit', 'ArticlesController@edit')->name('articles.edit');
//Your view
<a href="{{ URL::route('articles.edit', $article->id) }}">Edit</a>
Much more cleaner IMO
Upvotes: 11
Reputation: 3551
You can use named routes for cleaner in code
In your app/Http/routes.php (In case of laravel 5, laravel 5.1, laravel 5.2) or app/routes/web.php (In case of laravel 5.3)
Define route
Route::get('articles/{id}/edit',[
'as' =>'articles.edit',
'uses' =>'YourController@yourMethod'
]);
In Your view page (blade) use
<a href="{{ route('articles.edit',$article->id) }}">Edit</a>
One benefits of using named routes is if you change the url of route in future then you don't need to change the href in view (in your case)
Upvotes: 2
Reputation: 1001
I recommend to work with named routes!
Your routes/web.php file:
Route::get('articles/{articleId}/edit', 'YourController@action')->name('article.edit');
Your Blade-Template file:
<a href=" {{ route('article.edit', ['articleId' => $article->id]) }}">Edit></a>
Upvotes: -1
Reputation: 531
You can try with this
<a href="{{ url('/articles/edit',$article->id) }}"><i class="fa fa-fw fa-edit"></i></a>
and your route.php file
Route::get('/articles/edit/{art_id}', 'ArticlesController@edit');
Upvotes: 0