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>
Error: Notice (8): Undefined property: Cake\ORM\Query::$texto [APP/Template/Documentos/documento.ctp, line 3]
$ id, если он имеет значение, если он возвращает число, но запрос не работает, потому что я пытался добавить ->first(), но он возвращает:
Internal Server Error [500].
Спасибо! Это сработало






Вы передаете в представление экземпляр \ Cake \ ORM \ Query. Вы должны выполнить запрос, вызвав first () или all () или execute (), чтобы получить результат.
first () или all () или execute () Любой из трех выдает ошибку: Internal Server Error [500].
Обновите свой вопрос, чтобы показать код, в котором вы это пробовали?
вам нужно использовать метод 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);
Если вы извлекаете только одну запись, возможно, вам лучше сделать это с помощью
->get($idDocumento), а не->find()->where(['id' => $idDocumento]).