一、laravel框架的目录结构
app:应用目录,保存项目中的控制器、模型等
bootstrap:保存框架启动的相关文件
config:配置文件目录
database:数据库迁移文件和数据填充文件
public:应用入口文件index.php和前端资源文件(如CSS、JavaScript等)
resources:存放视图文件、语言包和未编译的前端资源文件
routes:存放应用中定义的所以路由
storage:存放编译后的模板,Session文件、缓存文件、日志文件等
tests:自动化测试文件
vendor:存放通过Composer加载的依赖
二、路由
Route::get('/test','TestController@index');
Route::get('/test', [TestController::class, 'index']);Route::get('test', function () {return view('hello get');
});Route::post('test', function () {return view('hello post');
});//match 表示匹配固定的请求方法路由
Route::match(['post','get'],'match', function () {return view('hello match');
});//any 表示匹配任意的请求方法路由
Route::any(['any'],function () {return view('hello any');
});//必选参数
Route::get('bixuan(id)', function ($id) {echo '必选'.$id;
});//可选参数
Route::get('kexuan(id?)', function ($id='默认值') {echo '可选'.$id;
});//数组传值:
Route::get('/test/{title?}', function ($title="我是标题") {//{title?}参数名,?可选return view('login',['title'=>$title]);//view(模板名,数组),
});//with传值:
Route::get('/with/{title?}', function ($title="我是标题") {//{title?}参数名,?可选 return view('login')->with('title',$title);//模板名
});//compact传值(推荐):
Route::get('/compact/{title?}', function ($title="我是标题",$name="我是name"){$age = 19;return view('login',compact('title','name','age'));
});//判断视图是否存在:
Route::get('/exists', function () {if(View::exists('login')){echo "模板存在";}else{echo "模板不存在";}
});//例如,如果您想要为应用程序中的所有路由添加一个前缀 api,可以这样使用 Route::prefix 方法:
Route::prefix('api')->group(function () {Route::get('', 'CategoryController@index');Route::get('add', 'CategoryController@add');
});//中间件 ->middleware('')方法允许您指定一个或多个中间件名称
Route::get('middleware/{height}',function(){reurn '您的身高复合要求';
})->middleware('height');
2、错误信息
2.1 报错 404 Not Found
原因及解决方法 (点击查看官方文档 )
>原因: “域名/user” 这种属于美化后的URL,正常应该是在前面要加上入口文件index.php,即通过“域名/index.php/user”访问。
Apache
框架中自带的 public/.htaccess 文件支持隐藏 URL 中的 index.php,如过你的 Laravel 应用使用 Apache 作为服务器,需要先确保 Apache 启用了mod_rewrite 模块以支持 .htaccess 解析。
如果 Laravel 自带的 .htaccess 文件不起作用,试试将其中内容做如下替换:
Options +FollowSymLinks
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Nginx
如果你使用的是 Nginx,使用如下站点配置指令就可以支持 URL 美化:
打开laravel8手册,复制已下代码到刚才打开的配置好的域名配置文件中
安装 | 入门指南 |《Laravel 8 中文文档 8.x》| Laravel China 社区 (learnku.com)
location / {try_files $uri $uri/ /index.php?$query_string;
}
配置好后重启Apache/Nginx验证。
2.2 错误信息:目标类[TestController]不存在
TestController在\App\Http\Controllers目录下,如下所示:
Route::get('/login', '\App\Http\Controllers\LoginController@login');
3、命令
//查看所有路由
php artisan route:list
三、控制器
3.1,控制器的创建
命令:php artisan make:controller 控制器名称
注意:命名规则适用大驼峰法 例如:TestController
//查询:
$list = DB::table('users')->get(); // 获取所有数据
$list = DB::table('users')->where('id', 1)->first(); // 根据ID查找用户
$list = DB::table('users')->where('name', 'John')->first(); // 根据条件查找用户
$list = DB::table('users')->orderBy('name')->get(); // 按条件排序后获取所有用户
$list = DB::table('users')->select('id', 'name', 'email')->get();//查询指定字段select
$list = DB::table('users')->pluck('name', 'id');//指定查询的单个字段并返回一个新的集合(不常用)
//关联查询-join()DB::table('user as t1')->select('t1*','t1.name')->leftjoin('author','t1.id','=','author.id')->get();//添加:
$content=input::get('content');
$title=input::get('title');
DB::table('cmss')->insert(array('title'=>$title,'content'=>$content));//修改:
$data=DB::table('cmss')->where('id',$arr['id'])->update($arr);//删除:
$arr=DB::table('cmss')->where('id','=',$id)->delete();//表单验证 - validate:
public function test2(Request $request)
{$request->validate($request,[// required 不能为空// min 最小值// max 最大值// integer 整型// email//'name'=>'required|min:2|max:30|',])
}
四、模型
4.1,模型的创建
命令:php artisan make:model 模型名(表名,首字母大写)
五、视图
1,两种模板文件格式-获取数据(两种文件同时存在时,blade模板引擎文件优先使用):
//login 模板名
login.php 格式:<?php echo $title; ?>
login.blade.php 格式:{{$title}}//模板页-显示报错信息-表单验证
@if($reeors->any())<div>报错信息@foreach($errors->all() as $error)<li>{{$error}}</li>@endforeach</div>
@endif<form action="">@csrf//防止CSRF攻击//验证信息显示姓名:<input type="" name="name" class="$error('name')"/><br/>@error('name')<div>{{$message}}</div>@enderror</form>