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。您应该使用请求实例。

IEMage::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>';
  } 
}

最后,看起来您正在查看 URL 参数以及引用$_POST数据。根据我的经验,最好一次只处理一个请求范围 ($_GET/$_POST)。

于 2012-10-02T01:27:51.360 回答