Bài 16. Xóa public trên url trong Laravel

Bài trước mình đã giới thiệu về Pagination trong Laravel 5 và hướng dẫn các bạn hiển thị list tin tức lên trang chủ. Bài hôm nay mình sẽ hướng dẫn các bạn về xóa public trên url, hiển thị trang chi tiết tin.

Mục Lục:

1. Xóa đường dẫn public trên url Laravel

Cách 1: Viết file .htaccess

thêm file .htaccess vào thư mục root với nội dung như sau

        
           RewriteEngine On
           RewriteRule ^(.*)$ public/$1 [L]
        
    

Cách 2: Di chuyển thư mục

Đầu tiên tạo thư mục local trong thư mục root cùng hàng với thư mục public

Tiếp theo, di chuyển toàn bộ thư mục, file từ thư mục root vào thư mục local chỉ để lại thư mục public

Tiếp theo, di chuyển toàn bộ thư mục, file từ thư mục public ra lại thư mục root

Mở file index.php sửa như sau

	
		require __DIR__.'/local/bootstrap/autoload.php';
		$app = require_once __DIR__.'/local/bootstrap/app.php';
	

Thêm vào dòng sau

		// set the public path to this directory
		$app->bind('path.public', function() {
			return __DIR__;
		});
	

Chạy thử nào

2. Tạo trang chi tiết tin

Tạo route cho trang chi tiết tin

        Route::get('{link}.html', ['as' => 'home', 'uses' => 'Home\HomeController@detail']);
    

Lấy dữ liệu tin tức, trong class HomeController thêm vào func tion detail

        public function detail ($link)
        {
            $article = DB::table('articles')
                ->where('articles.alias', '=', $link)
                ->select('articles.*')
                ->get();
            return view('home.detail', compact('article'));
        }
    

Hiển thị tin được chon resources/views/home/detail.blade.php

        @extends('home.base.base')
        @section('title', $article[0]->title)
        @section('content')
            

{{ $article[0]->title }}

Cập nhật: {{ date('d/m/y', strtotime($article[0]->updated_at)) }}
{!! $article[0]->content !!}
@endsection

Test thử nào trên trang chủ bạn kích vào 1 tin bất kỳ

Full source code: download

Series bài viết về lập trinh Laravel đến đây là kết thúc. Các bạn có ý kiến hay thắc mắc gì cứ comment bên dưới hoặc gửi về địa chỉ email: support@laedaily.com

Chúc các bạn thành công!