我正在使用Cakephp2.0我创建了一个自定义函数
<?php echo GenerateNavHTML($navarray); ?>
<?php
function GenerateNavHTML($nav)
{
if(!empty($nav)) {
if(isset($nav[0]['parent'])) {
$parentid=$nav[0]['parent'];
}else{
$parentid=1;
}
if($parentid==0) {
$html = '<ul style="display: block;" class="nav">';
}else {
$html='<ul>';
}
foreach($nav as $page) {
$html.='<li>';
$html .= '"'.$this->Html->url('Logout',array('controller'=>'users','action'=>'logout')).'"';
$html .= '</li>';
}
$html.='</ul>';
return $html;
}
}
?>
并给予
致命错误:无法重新声明GenerateNavHTML()
但是没有功能的重新声明。
如果我写
<?php
function GenerateNavHTML($nav)
{
if(!empty($nav)) {
if(isset($nav[0]['parent'])) {
$parentid=$nav[0]['parent'];
}else{
$parentid=1;
}
if($parentid==0) {
$html = '<ul style="display: block;" class="nav">';
}else {
$html='<ul>';
}
foreach($nav as $page) {
$html.='<li>';
$html .= '<a href=""></a>';
$html .= '</li>';
}
$html.='</ul>';
return $html;
}
}
?>
它工作正常
我想使用cakephp语法
谢谢
答案 0 :(得分:2)
在MVC中,此代码应该是Helper的一部分,而不仅仅是一个独立的“函数”。
这可能听起来很难,但事实并非如此。它也有很多优点;通过将代码移动到Helper,可以更容易地重复使用和维护。
例如;
创建一个'导航'帮助器(当然,给它一个逻辑名称);
应用程序/视图/助手/ NavigationHelper.php
class NavigationHelper extends AppHelper
{
/**
* Other helpers used by *this* helper
*
* @var array
*/
public $helpers = array(
'Html',
);
/**
* NOTE: In general, convention is to have
* functions/methods start with a lowercase
* only *Classes* should start with a capital
*
* @param array $nav
*
* @return string
*/
public function generateNavHTML($nav)
{
$html = '';
if (!empty($nav)) {
if (isset($nav[0]['parent'])) {
$parentid = $nav[0]['parent'];
} else {
$parentid = 1;
}
if ($parentid == 0) {
$html = '<ul style="display: block;" class="nav">';
} else {
$html = '<ul>';
}
foreach ($nav as $page) {
$html .= '<li>';
$html .= '"' . $this->Html->url('Logout', array('controller' => 'users', 'action' => 'logout')) . '"';
$html .= '</li>';
}
$html .= '</ul>';
}
// NOTE: moved this 'outside' of the 'if()'
// your function should always return something
return $html;
}
/**
* You can add other methods as well
* For example, a 'Convenience' method to create a link to the Homepage
*
* Simply use it like this:
* <code>
* echo $this->Navigation->logoutLink();
* </code>
*/
public function logoutLink()
{
return $this->Html->link(__('Log out'), array(
'controller' => 'users',
'action' => 'logout',
'confirm' => __('Are you sure you want to log out')
));
} }
创建该文件后,您可以在任何视图或元素中使用它;
echo $this->Navigation->generateNavHTML($navarray);
你甚至不必将它添加到控制器的'Helpers'数组中,因为CakePHP 2.3使用'自动加载'来为你做这个
如果您需要其他功能(与'导航'相关),您只需向助手添加'方法',我添加'logoutLink()'方法只是为了说明这个
有关详细信息,请阅读本章Creating Helpers
答案 1 :(得分:0)
试试这个:
<?php echo $this->GenerateNavHTML($navarray); ?>
然后在安全
之前宣布该功能