视图中的代码,这是直接从文档中复制的,不起作用。
// 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的控制器提供的。
我应该补充的是,如果我不使用参数,视图单元格工作正常,我只是想使用它们。
2条答案
按热度按时间t1rydlwq1#
以下是如何在视图单元格中修改
show
方法:字符串
通过在方法签名中添加
$params = []
,您可以为$params
数组提供默认值。这允许在不传递任何参数的情况下调用该方法,并且它将使用您设置的默认值。但是,您仍然可以根据需要传递参数来自定义视图单元格,就像您在视图中尝试做的那样。您的视图代码应该可以按预期工作:
型
请确保您已经使用更新的show方法签名保存了视图单元格,并且您应该不会再遇到“参数太少”错误。
在您的代码中,您使用的是名称空间
App\Cells\Dropdown
,但您的视图单元格名为DropdownCell
。b0zn9rqh2#
我试图使用“简单单元格”背后的逻辑,但我发现有效的方法是遵循“计算单元格”的说明。