我在codeigniter中有一个包含行id, name,
和email
的表。我有一个视图,我有一个看起来像这样的表单:
<input name='name' value='<?= $record->name; ?>' />
<input name='name' value='<?= $record->email; ?>' />
我还想在新记录和空记录上使用该表单。有没有办法使用CodeIgniters db类生成一个带有db结果结构的空stdClass,这样这段代码就不会引发一堆通知&amp;错误?
答案 0 :(得分:2)
这没有默认解决方案。您必须自己使用所有(空)属性填充对象,或者只检查属性是否存在。
<input name='name' value='<?= isset($record->email) ? $record->email : ''; ?>' />
不要忘记在form_prep()
上运行value
。
如果你想尝试这个,你可以创建一个虚拟类。
class DB_Record {
function __get($prop) {
return isset($this->$prop) ? $this->$prop : NULL;
}
}
然后让你的记录成为它的一个实例:
$record = new DB_Record;
// fetch data from your database and assign to properties of $record
然后,当访问不可访问的属性时,它将返回NULL
。
答案 1 :(得分:1)
试试这个,其中团队是一个表名:
$r = new stdClass();
foreach ($this->db->field_data('teams') as $f) {
$r->{$f->name} = '';
}
I.E:团队是MySQL表,其中包含字段:TeamName,Location,State
$ r将像对象一样:
$r->TeamName = ''
$r->Location = ''
$r->State = ''
等等。
答案 2 :(得分:0)
我认为你可以做的最好的事情就是你使用form_helper中的set_value函数,这样你的代码就会变成:
<input name='name' value='<?= set_value('name', $record->name); ?>' />
<input name='email' value='<?= set_value('email',$record->email); ?>' />
您可以在from_helper
了解有关form_helper的更多信息