Как сохранить исходный вид после того, как действие отображает другой элемент макета
У меня есть сценарий действия / представления, который отображает таблицу строк, и каждая строка активна по клику: я хочу, чтобы это действие обновляло определенный div с более подробной информацией о строке. Однако, когда я делаю это, исходная таблица теряется (представление очищается). Как я могу получить действие для рендеринга определенного сценария, но не повлиять на контейнер макета по умолчанию? ( layout->content() в этом случае) Примечание: я могу использовать _forward() или подобное, но мне было интересно, есть ли более элегантное решение.
Действие моего контроллера подробно выглядит так
public function detailAction()
{
// action body
$clientModel = new Model_Clients();
$id = $this->_request->getParam('id');
// get the specific row by 'id'
try {
$result = $clientModel->getClient($id);
$this->view->result = $result;
} catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "\n";
//die();
}
$this->render('detail', 'mainContentRight');
//$this->listAction(); !This doesnt work!
$this->_forward('list'); // Nasty, but works.
}
"Detail" относится к сценарию представления этого действия (кажется избыточным), а "mainContentRight" является целевым элементом макета для обновления.
Я думаю, что я упускаю жизненно важный момент в сценариях представления, любые советы приветствуются.
1 ответ
После пересылки вам все еще нужны те же данные для таблицы, что и в listAction. Тогда таблица должна отображаться правильно, но я думаю, что лучший подход здесь - это загрузить подробную информацию с помощью AJAX.