我是CodeIgniter 4的新用户。当我想在表单上显示表“ prodi”的“ prodi_name”时出现此错误。
这是我的ProdiModel
protected $table = 'prodi';
protected $primaryKey = 'id_prodi';
public function getProdi($id = false)
{
if ($id == false) {
return $this->findAll();
}
return $this->where('prodi_code', $id)->first();
}
我已将我的BaseController设置为
$this->prodiModel = new \App\Models\ProdiModel();
所以我的控制器是
public function add()
{
$data = [
'title' => 'Admin',
'prodi' => $this->prodiModel->getProdi(),
'validation' => \Config\Services::validation()
];
return view('admin/add', $data);
}
这是我的表单,我想在多个选择字段上显示prodi_name
<div class="form-group">
<label>Prodi</label>
<select class="form-control select2 multiple" id="prodi" name="prodi[]" multiple="multiple" data-placeholder="Select prodi">
<?php
foreach ($prodi as $prodi) :
echo "<option value='" . $prodi["prodi_name"] . "'";
if (old('prodi')) {
if (in_array($prodi['prodi_name'], old('prodi'))) echo "selected";
}
echo ">" . $prodi['prodi_name'] . "</option>";
endforeach; ?>
</select>
</div>
请帮助我解决此问题。谢谢
答案 0 :(得分:0)
首先在CI 4中没有first()方法, 使用
public function getProdi($id = false)
{
if ($id == false) {
return $this->findAll();
}
return $this->where('prodi_code', $id)->getFirstRow(‘array’);
}
第二个想法是,您将在此处返回两种类型的数据,如果id为false,则返回多维数组,如果id存在,则代码返回单行。 同样,您在同一方法中调用了findAll(),如果它返回并关联数组,则代码应运行,但是如果返回对象,则应更改为
<?php
foreach ($prodi as $prodi) :
echo "<option value='" . $prodi->prodi_name . "'";
if (old('prodi')) {
if (in_array($prodi->prodi_name, old('prodi'))) echo "selected";
}
echo ">" . $prodi->prodi_name . "</option>";
endforeach; ?>