07/09/2018, 10:35

Thủ Thuật Tạo Nhanh HTML Link trong Laravel

Đây là cách đơn giản nhất để tạo một link liên kết trong HTML: <a href="/sessions/create" title="Đăng Nhập">Đăng Nhập</a> Tuy nhiên nếu dùng Laravel thì bạn không nên làm như vậy vì nếu như vào một ngày đẹp trời khách hàng nói rằng họ muốn URL đăng nhập chuyển từ /sessions/create ...

Đây là cách đơn giản nhất để tạo một link liên kết trong HTML:

<a href="/sessions/create" title="Đăng Nhập">Đăng Nhập</a>

Tuy nhiên nếu dùng Laravel thì bạn không nên làm như vậy vì nếu như vào một ngày đẹp trời khách hàng nói rằng họ muốn URL đăng nhập chuyển từ /sessions/create sang /login. Lúc này bạn sẽ cần tìm kiếm tất cả những đoạn file đã hard code địa chỉ URL của trang đăng nhập là /sessions/create và đổi sang /login.

Cách làm tốt hơn sẽ là sử dụng route trong Laravel như sau (với điều kiện bạn sử dụng Blade template (thực tế là rất hiếm Laravel developer không sử dụng Blade template vì những tính năng tuyệt vời của nó, hy vọng bạn không phải rơi vào trong số các developer hàng hiếm):

<a href="{{URL::route('login')}}" title="Đăng Nhập">Đăng Nhập</a>

Và ở tập tin routes.php của Laravel bạn chỉ cần định nghĩa route login, ví dụ như sau:

Route::get("/login", ["as" => "login", "uses" => "SessionsController@create"]);

Và trong trường hợp khách hàng muốn tiếp tục đổi địa chỉ URL cho trang đăng nhập thì bạn cũng chỉ cần update ở một nơi duy nhất ở đoạn code định nghĩa route login trên.

Tuy nhiên đoạn code phía trên còn có thể làm cho ngắn họn hơn nữa nhờ sử dụng HTML::link() như sau:

{{ HTML::linkRoute("login", "Đăng Nhập") }}

Trường hợp một route được định nghĩa kèm với tham số kèm theo ví dụ như route sau đây được định nghĩa kèm theo tham số {id}:

Route::get("/posts/{id}", ["as" => "posts.show", "uses" => "PostsController@show"]);

Lúc này khi gọi method HTML::link() bạn sẽ truyền giá trị cho tham số {id} như sau:

{{ HTML::linkRoute("posts.show", "Bài viết với ID bằng 100", ["id" => 100]) }}

Lúc này HTML trả về từ đoạn code trên sẽ như sau:

<a href="/posts/100">Bài viết với ID bằng 100</a>

Nếu bạn muốn thêm thuộc tính title để tối ưu SEO (search engine optimization) cho trang:

{{ HTML::linkRoute("posts.show", "Bài viết với ID bằng 100", ["id" => 100], ["title" => "Bài viết với ID bằng 100"]) }}

Với trường hợp tạo link đăng nhập vì route login không có tham số nên khi sử dụng HTML::link() chúng ta sẽ để đối số thứ 3 là một mảng rỗng như sau:

{{ HTML::linkRoute("login", "Đăng Nhập", [], ["title" => "Đăng Nhập"]) }}

Sử dụng đố số thứ 4 khi gọi HTML::link(), bạn có thể thêm vào các thuộc tính khác cho phần tử a. Ví dụ dưới đây gán giá trị cho thuộc tính class là link-to-login-page cho phần tử a sẽ được tạo ra:

{{ HTML::linkRoute("login", "Đăng Nhập", [], ["title" => "Đăng Nhập", "class" => "link-to-login-page"]) }}
0