0

Magento で AZ インデックス検索を作成する際に問題が発生しています。既にコードを作成しましたが、「無効なメソッド...」というエラーが表示されます。

str_replace_once(配列 ( [0] => & [1] => ? [2] => 127.0.0.1/mgn-default/electronics/cameras.html ) )

私はPHPをよく知りません。ここに使用されるコードがあります:

<?php 
$search_array = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','ALL');

/*Find if the URL already contains any querystring variable or not */
if (strstr( $this->helper('core/url')->getCurrentUrl(), "&" ))
{
 $separator = '&'; 
}
else
{
    $separator = '?';
}
?>
    <div>
        <p class="view-mode-list-bot">
            <?php 
   $postData = Mage::app()->getRequest()->getParam('alpha');
   foreach ($search_array  as $search_array_value):

   /*Clean the URL*/
   if (strstr( $this->helper('core/url')->getCurrentUrl(), "?" ) )
   {
    $new_Url =  $this->str_replace_once('&','?',str_replace("?alpha=".trim($postData['alpha']),'',str_replace($separator."alpha=".trim($postData['alpha']),'',$this->helper('core/url')->getCurrentUrl())));
   }
   else
   {
    $new_Url = str_replace("?alpha=".trim($postData['alpha']),'',str_replace($separator."alpha=".trim($postData['alpha']),'',$this->helper('core/url')->getCurrentUrl()));
   }

   $alphaURL = $new_Url.$separator.'alpha='.$search_array_value;
?>

                    <a href="<?php echo $alphaURL; ?>" title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?> <?php if($search_array_value == $postData){ echo 'remove_under'; } ?>"><?php echo $search_array_value; ?></a>   

            <?php endforeach; ?>

        </p>

アドバイスやヘルプをいただければ幸いです。どうもありがとうございました。

4

1 に答える 1

0

私はマグネトを知りませんが、私が見ることができるものは、あなたがそうであるようにURLをテストする必要はありません。リクエストインスタンスを使用する必要があります。

すなわちMage::app()->getRequest()->getParam('alpha')

例で参照されている変数の多くは任意の値を持つ可能性があるため、ループで実際に取得しようとしているものを混乱させます。ただし、以下は、次のようなリクエストオブジェクトを介して変数にアクセスできることを確認するのに役立ちます。

$alpha = array('a','b','c', 'etc..');
/** fetch the request object **/
$request = Mage::app()->getRequest();
$letter  = $request->getParam("letter"); // Would and return "k" from http://mysite.com?letter=k
/** Test if we found a letter in the url **/
if (null !== $letter) {
  /** output the alphabet as links with each letter value as a link parameter **/
  for ($x = 0; $x < 26; $x++) {
    echo '<p><a href="?letter=$alpha">$alpha[$x]</a></p>';
  } 
}

$_POST最後に、URLパラメータと参照データを見ているように見えます。私の経験では、一度に1つのリクエストスコープ($ _ GET / $ _ POST)のみを処理する方が適切です。

于 2012-10-02T01:27:51.360 に答える