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');
原因及解决方法 (点击查看官方文档 )
>原因: “域名/user” 这种属于美化后的URL,正常应该是在前面要加上入口文件index.php,即通过“域名/index.php/user”访问。
Apache
框架中自带的 public/.htaccess 文件支持隐藏 URL 中的 index.php,如过你的 Laravel 应用使用 Apache 作为服务器,需要先确保 Apache 启用了mod_rewrite 模块以支持 .htaccess 解析。
如果 Laravel 自带的 .htaccess 文件不起作用,试试将其中内容做如下替换:
- Options +FollowSymLinks
- RewriteEngine On
-
- RewriteCond %{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验证。
TestController在\App\Http\Controllers目录下,如下所示:
Route::get('/login', '\App\Http\Controllers\LoginController@login');
//查看所有路由
php artisan route:list
命令: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|',
- ])
- }
命令:php artisan make:model 模型名(表名,首字母大写)
- 1,两种模板文件格式-获取数据(两种文件同时存在时,blade模板引擎文件优先使用):
- //login 模板名
- login.php 格式:
- 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>