DocumentosController:
public function documento($idDocumento) {
$documentos = TableRegistry::get('Documentos');
$documento = $documentos
->find()
->select('id', 'titulo', 'texto')
->where(['id' => $idDocumento]);
}
documento.ctp:
<div>
<?= $documento->texto; ?>
</div>
错误:通知(8):未定义的属性:Cake \ ORM \ Query :: $ texto [APP / Template / Documentos / documento.ctp,第3行]
$ id如果它有值,如果它返回一个数字,但是该查询不起作用,因为我尝试添加->first()
,但是它返回:
内部服务器错误[500]。
答案 0 :(得分:1)
您必须使用set()方法,这是将数据从控制器发送到视图的主要方法。
使用set()后,可以在视图中访问变量:
public function documento($idDocumento) {
$documentos = TableRegistry::get('Documentos');
$documento = $documentos
->find('all')
->select('id', 'titulo', 'texto')
->where(['id' => $idDocumento]);
$this->set('documento ', $documento );
}
以供参考https://book.cakephp.org/3.0/en/controllers.html#setting-view-variables
您还可以使用get()
$documento = $documentos->get($idDocumento);
答案 1 :(得分:0)
您将\ Cake \ ORM \ Query的实例传递给视图。您必须通过调用first()或all()或execute()来执行查询以获得结果。