组件的执行顺序问题

1. 运行环境

1). 当前使用的 Laravel 版本?

Laravel Framework 9.46.0

2). 当前使用的 php/php-fpm 版本?

PHP 版本:

PHP 8.1.13 (cli) (built: Nov 26 2022 14:07:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.13, Copyright (c) Zend Technologies
with Zend OPcache v8.1.13, Copyright (c), by Zend Technologies
with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans

php-fpm 版本:

3). 当前系统

Windows 10

  • 本机windows10 远程机ubuntu22.04
  • 远程机下载laravel
    curl -s "https://laravel.build/test?with=mysql&devcontainer" | bash
  • 通过vscode的dev container直接连接进行开发

4). 业务环境

开发环境

5). 相关软件版本

2. 问题描述?

用artisan 建立了一个component,但是发现只运行blade模板,生成的class类别没有运行.

  1. 首先增加了一个component
    php artisan make:component banner
  2. 页面进行调用
    index.blade.php
     <body>
         <x-banner />
     </body>

3. 您期望得到的结果?

按照文档的描写,应该是先调用banner.php进行数据的准备, 然后调用banner.blade.php进行渲染

4. 您实际得到的结果?

banner.blade.php 被调用,但是banner.php没有调用,我增加了dd来进行调试

banner.php:
    public function render()
    {
        dd('aaaa');
        return view('components.banner');
    }

5 额外问题

用vscode在devcontainer环境中如何进行 debug??? 本机我会,但是在容器中我没找到文档

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
mnizfd
最佳答案

php artisan make:component banner 这句话需要修改成 php artisan make:component Banner 你再试试就ok了 我测试可以的

1年前 评论
讨论数量: 6

<x-banner />本来代表就是直接引用banner.blade.php啊,跟后端的路由没啥关系啊。换种思路,调用的是组件banner,但是加载组件banner的时候,再去调用处理数据的方法不就好了。

1年前 评论
lostmarine (楼主) 1年前
wxfjamdc 1年前

没用过组件,但是我盲猜一手,源码寻找组件对应的 php 类时根据大驼峰规则去寻找 php 类。

你建立的类是 App\View\Components\banner (banner.php)

但是源码找的是 App\View\Components\Banner (Banner.php)

没找到对应类的情况下就直接渲染 blade 文件了

1年前 评论
mnizfd

php artisan make:component banner 这句话需要修改成 php artisan make:component Banner 你再试试就ok了 我测试可以的

1年前 评论

经过测试,的确是组件名称第一个字母需要大写。框架找类的时候是按照这个规则来找的。多谢各位

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!