laravel框架 - 开发实战(目录结构,路由,控制器,模型,视图)

news/2024/5/2 5:06:29

一、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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.tangninghui.cn.cn/item-260.htm

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】二叉树的层序遍历(四)

目录 一&#xff0c;层序遍历概念 二&#xff0c;层序遍历的实现 1&#xff0c;层序遍历的实现思路 2&#xff0c;创建队列 Queue.h Queue.c 3&#xff0c;创建二叉树 BTree.h BTree.c 4&#xff0c;层序遍历的实现 一&#xff0c;层序遍历概念 层序遍历&#xff1a;除了先序…

分布式调度 Elastic-job

分布式调度 Elastic-job 1.概述 1.1什么是任务调度 我们可以思考一下下面业务场景的解决方案: 某电商平台需要每天上午10点&#xff0c;下午3点&#xff0c;晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算…

论文笔记:Deep Representation Learning for Trajectory Similarity Computation

ICDE 2018 1 intro 1.1 背景 用于计算轨迹相似性的成对点匹配方法&#xff08;DTW&#xff0c;LCSS&#xff0c;EDR&#xff0c;ERP&#xff09;的问题&#xff1a; 轨迹的采样率不均匀 如果两个轨迹表示相同的基本路径&#xff0c;但是以不同的采样率生成&#xff0c;那么这…

今年嵌入式行情怎么样?

今年嵌入式行情怎么样&#xff1f; 嵌入式技术今年可以说是IT领域中最炙手可热的之一。随着中年危机和内卷问题的出现&#xff0c;越来越多的互联网从业者将目光投向了嵌入式领域。国内的嵌入式市场一直受终端需求变化的影响而波动&#xff0c;但随着国内产业自主化的发展趋势…

QT Day3

完成文本编辑器的保存工作 //保存按钮对应的槽函数 void Widget::on_saveBtn_clicked() {//文本编辑器的保存工作QString fileNameQFileDialog::getSaveFileName(this, //父组件"选择要保存的文件", //对话框标题"./", //起始路径&…

SpringSecurity 入门

文章目录 Spring Security概念快速入门案例环境准备Spring配置文件SpringMVC配置文件log4j配置文件web.xmlTomcat插件 整合SpringSecurity 认证操作自定义登录页面关闭CSRF拦截数据库认证加密认证状态记住我授权注解使用标签使用 Spring Security概念 Spring Security是Spring…