我在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>
任何建议和帮助将不胜感激,非常感谢。
答案 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)。