如何解决字符串偏移量'name'非法CodeIgniter 4
我是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>
请帮助我解决此问题。谢谢
解决方法
首先在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; ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。