无效方法... str_replace_once(Array)

时间:2012-10-02 00:30:13

标签: php arrays str-replace

我在Magento中创建A-Z索引搜索时遇到了一些麻烦。我已经创建了代码,但是,我收到了一个“无效的方法......”错误:

  

str_replace_once(Array(       [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>

任何建议和帮助将不胜感激,非常感谢。

1 个答案:

答案 0 :(得分:0)

我不知道磁控,但我能看到的是,不需要来测试网址。您应该使用请求实例。

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数据。根据我的经验,最好一次处理一个请求范围($ _GET / $ _ POST)。