2

次のようにクエリ文字列を作成しようとしています。

<a href="<?= $this->url(array('page' => $this->next)) ?>" class="next">Next Page</a>

クエリ文字列に配列を追加したい。例えば、array('find_loc'=>'New+York', 'find_name'=>'starbucks')

http://example.com/1/?find_loc=New+York&find_name=starbucksのようなURLを取得する予定です

これを行うための最良の方法は何ですか?文字列をURLに追加することを提案する同様の質問を見つけました。クエリ文字列のヘルパーはありますか?

4

4 に答える 4

1

あなたの質問に対する簡単な答えはノーです。

クラスの説明は次のとおりです。

/**
 * Helper for making easy links and getting urls that depend on the routes and router
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

簡単なリンクを作成し、ルートルーターに依存するURLを取得するためのヘルパー

その目的は明確だと思います。ルートやルーターに依存するURLを作成するために使用します。したがって、質問に投稿したリンクに推奨されるクエリ文字列を追加するだけです。

于 2011-07-22T18:17:56.407 に答える
0

以下はあなたのために働くはずです:

<a href="<?= $this->url(array('page' => $this->next, 'find_loc' => 'New York', 'find_name' => 'starbucks')')) ?>" class="next">Next Page</a>

ZF-Routerは、値をRequestオブジェクトにマップします。

コントローラでは、 Response-Objectを使用してこれらのパラメータにアクセスできます。

$loc  = $this->getRequest()->getParam('find_loc');
$name = $this->getRequest()->getParam('find_name); 
于 2011-07-22T18:16:07.490 に答える
0

カスタムヘルパーを作成できます。

class My_View_Helper_UrlHttpQuery extends Zend_View_Helper_Abstract
{
    public function urlHttpQuery($query)
    {
        $urlHelper = $this->view->getHelper('url');
        $params = func_get_args();
        array_shift($params);//removing first argument
        $url = call_user_func_array(($urlHelper, 'url'), $params); 
        if(!is_string($query)) { //allow raw query string
            $query = array($query);
            $query = http_build_query($query);
        }
        if(!empty($query) {
            $url .= '?' . ltrim('?', $query);
        }
        return $url;
    }
}

このヘルパーをビューに登録すると、次のように使用できます<a href="<?=$this->urlHttpQuery(array('find_loc'=>'New+York', 'find_name'=>'starbucks'), array('page' => $this->next), 'routename', $otherUrlHelperParams) ?>" class="next">Next Page</a>

于 2011-07-23T07:04:23.467 に答える
0

作業コード

/**
 * Class Wp_View_Helper_UrlHttpQuery
 */
class Wp_View_Helper_UrlHttpQuery extends Zend_View_Helper_Abstract
{
    public function urlHttpQuery($query = array())
    {
        $urlHelper = $this->view->getHelper('url');
        $params = func_get_args();
        //removing first argument
        array_shift($params);
        $url = call_user_func_array(array($urlHelper, 'url'), $params);
        if (is_array($query) || is_object($query)) {
            $query = http_build_query($query);
        }

        if (!empty($query)) {
            $url .= '?' . ltrim($query, '?');
        }
        return $url;
    }

}

アップストリームコードが機能しないため

于 2017-02-09T09:41:18.803 に答える