Codeigniter 4查看单元格参数未通过

lndjwyie  于 7个月前  发布在  其他
关注(0)|答案(2)|浏览(41)

视图中的代码,这是直接从文档中复制的,不起作用。

// app -> Cells -> DropdownCell.php

 namespace App\Cells;

use CodeIgniter\View\Cells\Cell;

class DropdownCell extends Cell
{
    protected $surveys; 
   
    public function courses($params): string
    {
        $this->surveys = model('SurveyModel');
        $courses = $this->surveys->getUserCourses(auth()->user()); 
        $data['items'] = []; 

        foreach ($courses as $c) {
            $data['items'][] = ['id' => $c->id, 'title' => $c->title];
        }
        return view('components/dropdown',$data);
 
    }
}

字符串
检视:

<?= view_cell('DropdownCell::courses', ['type' => 'test']) ?>


我得到一个错误:
函数App\Cells\Dropdown::courses()的参数太少,0已传递
我看不出这有什么问题?这个单元格是按照文档指南用Spark做的。这是由一个扩展BaseController的控制器提供的。
我应该补充的是,如果我不使用参数,视图单元格工作正常,我只是想使用它们。

t1rydlwq

t1rydlwq1#

以下是如何在视图单元格中修改show方法:

public function show(array $params = []): string
{
    return "<div class=\"alert alert-{$params['type']}\">{$params['message']}</div>";
}

字符串
通过在方法签名中添加$params = [],您可以为$params数组提供默认值。这允许在不传递任何参数的情况下调用该方法,并且它将使用您设置的默认值。但是,您仍然可以根据需要传递参数来自定义视图单元格,就像您在视图中尝试做的那样。
您的视图代码应该可以按预期工作:

<?= view_cell('DropdownCell::show', ['type' => 'success', 'message' => 'The user has been updated.']) ?>


请确保您已经使用更新的show方法签名保存了视图单元格,并且您应该不会再遇到“参数太少”错误。
在您的代码中,您使用的是名称空间App\Cells\Dropdown,但您的视图单元格名为DropdownCell

b0zn9rqh

b0zn9rqh2#

我试图使用“简单单元格”背后的逻辑,但我发现有效的方法是遵循“计算单元格”的说明。

相关问题