Сетка с кнопкой на страницу сведений

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

Я знаю, как добавить кнопку в сетку, но я хочу посмотреть, как лучше всего отображать страницу сведений. Я видел форму с данными только для чтения, а также видел создание пользовательского шаблона. Я уверен, что есть варианты использования для обоих. Какой лучший?

И, наконец, как мне передать идентификатор на связанную страницу?

Любая помощь будет оценена по достоинству.


person Ralanyo    schedule 31.12.2012    source источник


Ответы (1)


Я не буду давать полнофункциональный ответ прямо сейчас (сейчас не на моем ноутбуке для разработки), но вкратце:

  • Вы можете использовать столбец сетки типа «расширитель». $grid->addColumn('expander',...);

  • Вы можете использовать столбец сетки типа «кнопка» $b=$grid->addColumn('button',...) и добавить некоторый код при нажатии кнопки, например if($b->isClicked()){... }.

В обоих случаях вы получите параметр $_GET[xxx] с идентификатором записи строки сетки, где xxx — это имя столбца расширения/кнопки, заданное в методе addColumn().

Вы можете использовать новый аддон Romans, сделанный несколько недель назад. Речь идет о том, как открыть «внутреннюю страницу» — новую всплывающую страницу, которая «внедряется» в класс родительской страницы.


Изменить: если вы хотите просто перенаправить на страницу сведений с установленным id=xxx, вы можете сделать следующее:

// Add button column to grid
$grid->addColumn('button','details','Details');

// Action to do when details button is clicked
// This must return JavaScript (use execute() method to do that immediately)
if(isset($_GET['details'])) {
    // redirect to page foo/bar&id=xxx
    $this->js()->univ()
        ->location($this->api->url('foo/bar',array('id'=>$_GET['details'])))
        ->execute();
}

Вы также можете использовать перенаправление (url, обратный вызов) или redirectURL (url, обратный вызов) вместо местоположения (url), если вам нужны некоторые функции обратного вызова JS.

person DarkSide    schedule 01.01.2013