laravel 的路由、控制器、model,视图的写法

曹建明
2023-12-01

1、添加路由routes/web.php

EgRoute::get('news', 'NewsController@index');  

Route::post('news/detail/{id}', 'NewsController@detail');

路由还可以写很多样子,具体的可看如下链接:

https://laravel-china.org/docs/laravel/5.5/routing/1293

 

***中间件***

https://laravel-china.org/docs/laravel/5.5/middleware/1294

1)、Laravel中间件特点,可以实现访问前后台的处理,例如请求和返回,权限认证等;

2)、要给路由组中所有的路由分配中间件,可以在group之前调用middleware方法,中间件会依照他们在数组中列出的顺序来运行:

Route::middleware(['first', 'second'])->group(function () {

    Route::get('/', function () {

        // 使用 first second 中间件

    });

    Route::get('user/profile', function () {

        // 使用 first second 中间件

    });

});

 

2、创建控制器 app\Http\Controllers\NewsController.php

Eg

<?php  

namespace App\Http\Controllers;  

use App\News;  

use App\Http\Requests;  

use App\Http\Controllers\Controller;  

use Illuminate\Http\Request;  

class NewsController extends Controller {  

    public function index() {

        $news = News::all();  

        //return $news;//直接返回json  

        return view('news.index', compact('news')); //返回视图  

          

    }  

    public function detail($id) {    

        $row = News::getOne($id);  

        return view('news.detail', compact('row'));  

    }  

}

 

3、创建模型 app\News.php

Eg

<?php  

    namespace App;  //当前的类是属于app这个命名空间的

    use Illuminate\Database\Eloquent\Model;  

    use Illuminate\Database\Eloquent\SoftDeletes;  

    use DB;  //要使用App这个命名空间下的这个DB

    class News extends Model {  

        static function getOne($id) {  

            $row = DB::table('news')->where('id', $id)->first();   

            return $row;  

        }  

    }  

 

4、创建视图,laravel使用的是Blade模板引擎,同时也支持PHP原生写法

resources\views\news\index.blade.php

Eg

<html>  

    <head>  

        <title>新闻列表</title>  

    </head>  

    <body>  

        <h2>新闻列表</h2>  

        <div class="container">  

          @foreach($news as $row)  

            <article>  

              <a href="{{url('news/detail/'.$row->id)}}">{{$row->title}}</a>  

            </article>  

          @endforeach  

        </div>  

    </body>  

</html>

 类似资料: