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

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

}

«Подробности» относятся к сценарию просмотра этого действия (кажется избыточным), а «mainContentRight» — это целевой элемент макета для обновления.

Я думаю, что мне не хватает жизненно важного момента в сценариях просмотра, любые советы приветствуются.


person alfaMonkey    schedule 22.01.2014    source источник


Ответы (1)


После пересылки вам по-прежнему нужны те же данные для таблицы, что и в listAction. Затем таблица должна отображаться правильно, но я думаю, что здесь лучше всего загружать подробную информацию с помощью AJAX.

person s7anley    schedule 28.01.2014
comment
Спасибо, в этом случае я уступил ajax !! По крайней мере, zendx снимает большую часть боли. - person alfaMonkey; 30.01.2014