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


    一、laravel框架的目录结构

    app:应用目录,保存项目中的控制器、模型等

    bootstrap:保存框架启动的相关文件

    config:配置文件目录

    database:数据库迁移文件和数据填充文件

    public:应用入口文件index.php和前端资源文件(如CSS、JavaScript等)

    resources:存放视图文件、语言包和未编译的前端资源文件

    routes:存放应用中定义的所以路由

    storage:存放编译后的模板,Session文件、缓存文件、日志文件等

    tests:自动化测试文件

    vendor:存放通过Composer加载的依赖
     

     二、路由

    1. Route::get('/test','TestController@index');
    2. Route::get('/test', [TestController::class, 'index']);
    3. Route::get('test', function () {
    4. return view('hello get');
    5. });
    6. Route::post('test', function () {
    7. return view('hello post');
    8. });
    9. //match 表示匹配固定的请求方法路由
    10. Route::match(['post','get'],'match', function () {
    11. return view('hello match');
    12. });
    13. //any 表示匹配任意的请求方法路由
    14. Route::any(['any'],function () {
    15. return view('hello any');
    16. });
    17. //必选参数
    18. Route::get('bixuan(id)', function ($id) {
    19. echo '必选'.$id;
    20. });
    21. //可选参数
    22. Route::get('kexuan(id?)', function ($id='默认值') {
    23. echo '可选'.$id;
    24. });
    25. //数组传值:
    26. Route::get('/test/{title?}', function ($title="我是标题") {//{title?}参数名,?可选
    27. return view('login',['title'=>$title]);//view(模板名,数组),
    28. });
    29. //with传值:
    30. Route::get('/with/{title?}', function ($title="我是标题") {//{title?}参数名,?可选
    31. return view('login')->with('title',$title);//模板名
    32. });
    33. //compact传值(推荐):
    34. Route::get('/compact/{title?}', function ($title="我是标题",$name="我是name"){
    35. $age = 19;
    36. return view('login',compact('title','name','age'));
    37. });
    38. //判断视图是否存在:
    39. Route::get('/exists', function () {
    40. if(View::exists('login')){
    41. echo "模板存在";
    42. }else{
    43. echo "模板不存在";
    44. }
    45. });
    46. //例如,如果您想要为应用程序中的所有路由添加一个前缀 api,可以这样使用 Route::prefix 方法:
    47. Route::prefix('api')->group(function () {
    48. Route::get('', 'CategoryController@index');
    49. Route::get('add', 'CategoryController@add');
    50. });
    51. //中间件 ->middleware('')方法允许您指定一个或多个中间件名称
    52. Route::get('middleware/{height}',function(){
    53. reurn '您的身高复合要求';
    54. })->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 文件不起作用,试试将其中内容做如下替换:

    1. Options +FollowSymLinks
    2. RewriteEngine On
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteCond %{REQUEST_FILENAME} !-f
    5. RewriteRule ^ index.php [L]

    Nginx
    如果你使用的是 Nginx,使用如下站点配置指令就可以支持 URL 美化:

     打开laravel8手册,复制已下代码到刚才打开的配置好的域名配置文件中

    安装 | 入门指南 |《Laravel 8 中文文档 8.x》| Laravel China 社区 (learnku.com)

    1. location / {
    2. try_files $uri $uri/ /index.php?$query_string;
    3. }

     配置好后重启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

     

    1. //查询:
    2. $list = DB::table('users')->get(); // 获取所有数据
    3. $list = DB::table('users')->where('id', 1)->first(); // 根据ID查找用户
    4. $list = DB::table('users')->where('name', 'John')->first(); // 根据条件查找用户
    5. $list = DB::table('users')->orderBy('name')->get(); // 按条件排序后获取所有用户
    6. $list = DB::table('users')->select('id', 'name', 'email')->get();//查询指定字段select
    7. $list = DB::table('users')->pluck('name', 'id');//指定查询的单个字段并返回一个新的集合(不常用)
    8. //关联查询-join()
    9. DB::table('user as t1')
    10. ->select('t1*','t1.name')
    11. ->leftjoin('author','t1.id','=','author.id')
    12. ->get();
    13. //添加:
    14. $content=input::get('content');
    15. $title=input::get('title');
    16. DB::table('cmss')->insert(array('title'=>$title,'content'=>$content));
    17. //修改:
    18. $data=DB::table('cmss')->where('id',$arr['id'])->update($arr);
    19. //删除:
    20. $arr=DB::table('cmss')->where('id','=',$id)->delete();
    21. //表单验证 - validate:
    22. public function test2(Request $request)
    23. {
    24. $request->validate($request,[
    25. // required 不能为空
    26. // min 最小值
    27. // max 最大值
    28. // integer 整型
    29. // email
    30. //
    31. 'name'=>'required|min:2|max:30|',
    32. ])
    33. }

    四、模型

    4.1,模型的创建

    命令:php artisan make:model 模型名(表名,首字母大写)

    五、视图

    1. 1,两种模板文件格式-获取数据(两种文件同时存在时,blade模板引擎文件优先使用):
    2. //login 模板名
    3. login.php 格式:
    4. login.blade.php 格式:{{$title}}
    5. //模板页-显示报错信息-表单验证
    6. @if($reeors->any())
    7. <div>
    8. 报错信息
    9. @foreach($errors->all() as $error)
    10. <li>{{$error}}li>
    11. @endforeach
    12. div>
    13. @endif
    14. <form action="">
    15. @csrf//防止CSRF攻击
    16. //验证信息显示
    17. 姓名:<input type="" name="name" class="$error('name')"/><br/>
    18. @error('name')
    19. <div>{{$message}}div>
    20. @enderror
    21. form>

  • 相关阅读:
    使用JavaScript的效果实现输入相关信息计算票价的效果
    bert模型的参数量和时间复杂度分析
    有创意且简美大气的图表-堆叠极扇图
    mybatis foeahe 批量插入 删除 修改
    canvas
    axios的post请求所有传参方式
    python发送阿里云短信教程
    CTFHub | Refer注入
    【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组
    Windows平台安装GDB调试器
  • 原文地址:https://blog.csdn.net/qq_20869933/article/details/132844184