Как я могу записать URL платформы зенда, которые имеют теги привязки в теле?

Скорее всего, вам нужно набрать:

fab hello()

или

$ fab hello
11
задан Charles 24 December 2012 в 00:03
поделиться

3 ответа

одна из возможностей состоит в том, чтобы переопределить помощника URL, или создать нового.

class My_View_Helper_Url extends Zend_View_Helper_Url
{    
    public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        if (isset($urlOptions['anchor']) && !empty($urlOptions['anchor']))
        {
            $anchor = $urlOptions['anchor'];
            unset($urlOptions['anchor']);
        }
        else
        {
            $anchor = '';
        }

        return parent::url($urlOptions, $name, $reset, $encode).$anchor;
    }
}

этот помощник URL переопределения помощника, проблема, что Вы не можете использовать параметр, названный 'привязкой', потому что это будет изменено в привязку в URL.

Вы назовете его, поскольку в Вашем пример

<?= $this->url(array(
    'controller'=>'my.controller',
    'action'=>'my.action',
    'anchor'=>'#myanchor'
));

Я надеюсь, что это помогает

13
ответ дан 3 December 2019 в 04:14
поделиться

Существует несколько путей, которыми Вы могли пойти о реализации идентификатора фрагмента в Ваши URL. Ниже некоторые опции, наряду с некоторыми за и против для каждого.

Прямой добавляют

Вы могли просто добавить "#$fragment_id" после Вашего url() звонить. Неэлегантный, но простой. Если Вы не используете привязки к странице очень (т.е. только Одна или две страницы), это - способ пойти.

Запишите пользовательское url() помощник

Вы могли записать пользовательскую версию url() добавление дополнительного 5-го аргумента в пользу идентификатора фрагмента:

class My_View_Helper_Url extends Zend_View_Helper_Url
{    
    public function url(array $urlOptions  = array(), $name   = null, 
                              $reset       = false,   $encode = true, 
                              $fragment_id = null)
    {
        $uri = parent::url($urlOptions, $name, $reset, $encode);

        if(!is_null($fragment_id)) {
            $uri .= "#$fragment_id";
        }

        return $uri;
    }
}

Таким образом, привязка (и идентификатор привязки/фрагмента) информация сохранена строго скручиванием жгутов областью Представления. Это хорошо для общего использования, но может стать немного громоздким для маршрута по умолчанию. Кроме того, это все еще немного слишком трудно кодируется для некоторого использования.

Запишите пользовательское Route класс (Экстремальное значение)

Как третья опция, Вы могли записать пользовательскую версию Zend_Controller_Router_Route класс (классы), конкретно assemble($data, $reset, $encode) метод ( match($path) метод игнорирует идентификаторы фрагмента по умолчанию).

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

Протест

Определенные соображения должны быть приняты во внимание при использовании идентификаторов фрагмента. Например, строки запроса должны предшествовать идентификатору фрагмента в uri, иначе, строка запроса, проигнорированная PHP. Однако большинство приложений ZF имеет тенденцию избегать использования строк запроса, таким образом, это не может быть проблема.

7
ответ дан 3 December 2019 в 04:14
поделиться

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

0
ответ дан 3 December 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: