一、:laravel如何创建一个控制器?
控制器的创建方法有两种:
1、新建一个文件,写入php代码并继承Controller类,即可
IndexController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class IndexController extends Controller{
//方法
public function index(){
echo "IndexController-index方法";
}
}
?>routes.php如何配置?
配置路由:app/Http/routes.php
Route::get("index","IndexController@index"); 
访问url地址:www.app.com/index
结果:IndexController-index方法

2、使用artisan 的方法去创建
&nb
二、:控制器应该放在什么位置?
app/Http/Controllers 放在这个目录中。
结合项目的实施,需要有 后台和前台,那又应该怎么去做呢?
直接在Controllers这个目录下,创建Admin和Home这两个文件夹,把对应的控制器放在这个目录,
然后把控制器的命名空间改成这个目录,保存即可。
分目录创创建控制器:

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class UserController extends Controller{
public function index(){
echo "user--index";
}
}
<?php
Route::get("user","Admin\UserController@index");
?>
拔高:

<?php
Route::get('b', ['uses' => 'IndexController@b', 'as' => 'bb']);
route("bb"); 可以得到访问这个控制器的url地址 http://www.app.com/b
那么说了,能不能写在一行中呢?
Route::get("index","Admin\IndexController\index")->name("name");路由分组:
路由分组使用的场景是 比如后台登录,后台所有的都是 admin 看图:

不但前缀可以分组,命名空间也可以也可以单独提取出来:如图


使用命令创建一个控制器:
php artisan make:controller UserController
个人不喜欢,我喜欢复制粘贴
php artisan route:list 列出所有的路由

资源路由
Route::resource("article","ArticleController");这一条路由有什么作用?
看 使用 php artisan route:list 来看看


php artisan make:controller ArticleController --resource
Route::resource('article', 'ArticleController');
<?php
namespace App\Http\Controllers\Inquiry;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}为什么用resource参数,因为我们在做一个后台的时候,设计到增删改查操作,而这些操作我们通过–resource就可以直接生成这些方法
,Route::resource其实就是生成了快捷的路由,让我们本来需要写的get,post,delete,patch直接用restful方式一键生成了。
**需要注意的是index是列表, store是新增,show是详情,update是更新, destory是删除。
通过resource 这条路由,就省去了一条一条去写路由规则。
那么我如果在ArticleController中定义了一个方法,resource这个路由是不能去匹配到这个方法的,
需要单独定义,才能访问
Route::get("article/test","ArticleController@test");
Route::resource("article","ArticleController");
单独定义的路由,需要放在resource它的上面,否则报错
Route::get("aa/test","ArticleController@test");如果使用这种模式的话就正常访问,但如果改成这种模式就报错了,一定要切记
Route::resource("article","ArticleController");
Route::get("article/test","ArticleController@test");
自定义的路由,要使用article/这样的方式,必须放在resource 路由的上面。
通过测试,每一个路由都是可以访问的。

模型绑定器在哪里: RouteServiceProviders.php 在这个文件中有一个 boot 方法,可以在方法内绑定相关的规则
例如: Route::pattern('id','[0-9]+');

在boot方法里写的验证规则,则全局有效。 只验证0-9 之间的数字
如果全局绑定后,是否可以局部解除呢?
答案是可以的,
Route::get("aa/test/{id}","ArticleController@test")->where('id','*');这样就可以解除对id的限制,输入的任何字符都是可以的。

路由正常跳转是302 临时跳转,那么如何可以永久跳转呢? 使用301



视图路由:

Route::view("task","task",['id'=>10]);

通过匿名函数的形式,填写view视图
或在控制器中 view函数返回视图
响应输出,response

路由重定向:

//跳转资源外部
redirect()->away("http://www.baidu.com");
资源路由:

php artisan route:list 打印出当前项目中所有的路由

路由别名、路由限速器:
https://www.heibaiketang.com/course/show/165.html