Как сохранить исходный вид после того, как действие отображает другой элемент макета

У меня есть сценарий действия / представления, который отображает таблицу строк, и каждая строка активна по клику: я хочу, чтобы это действие обновляло определенный 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.

Другие вопросы по тегам