我是Joomla的業餘愛好者,因爲我上週纔開始使用此框架進行開發。截至目前,我正在瀏覽官方Wiki中發現的Joomla官方教程。但是,無論我做錯了什麼,或者有什麼我忘記了,或者在上述教程中沒有提及。Joomla!2.5 ACL不顯示選項
我經歷的最後一步是開發訪問控制列表;但是,維護按鈕沒有顯示。
下面的代碼我怎麼有這麼遠:
管理/視圖/的HelloWorld/view.html.php
class HelloWorldViewHelloWorld extends JView {
protected $form;
protected $item;
protected $script;
protected $canDo;
public function display($tpl = NULL){
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->canDo = HelloWorldHelper::getActions($this->item->id);
if(count($errors = $this->get('Errors'))){
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->addToolBar();
parent::display($tpl);
$this->setDocument();
}
protected function addToolBar(){
$input = JFactory::getApplication()->input;
$input->set('hidemainmenu', true);
$isNew = ($this->item->id == 0);
JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW') : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld');
if($isNew){
if($this->canDo->get('core.create')){
JToolBarHelper::apply('helloworld.apply', 'JTOOLBAR_APPLY');
JToolBarHelper::save('helloworld.save', 'JTOOLBAR_SAVE');
JToolBarHelper::custom('helloworld.save2copy', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('helloworld.cancel', 'JTOOLBAR_CANCEL');
} else {
if($this->canDo->get('core.edit')){
JToolBarHelper::apply('helloworld.apply', 'JTOOLBAR_APPLY');
JToolBarHelper::save('helloworld.save', 'JTOOLBAR_SAVE');
if($this->canDo->get('core.create')){
JToolBarHelper::custom('helloworld.save2copy', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
}
}
if($this->canDo->get('core.create')){
JToolBarHelper::custom('helloworld.save2copy', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('helloworld.cancel', 'JTOOLBAR_CLOSE');
}
}
protected function setDocument(){
$isNew = ($this->item->id < 1);
$document = JFactory::getDocument();
$document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING') : JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING'));
$document->addScript(JURI::root() . $this->script);
$document->addScript(JURI::root() . "/administrator/components/com_helloworld/views/helloworld/submitbutton.js");
JText::script('COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE');
}
}
管理/助理/ helloworld.php(部分)
abstract class HelloWorldHelper {
[...]
public static function getActions($messageId = 0){
jimport('joomla.access.access');
$user = JFactory::getUser();
$result = new JObject;
if(empty($messageId)){
$assetName = 'com_helloworld';
} else {
$assetName = 'com_helloworld.message.' . (int) $messageId;
}
$actions = JAccess::getActions('com_helloworld', 'component');
foreach($actions as $action){
$result->set($action->name, $user->authorise($action->name, $assetName));
}
return $result;
}
}
我試着用var_dump($this->canDo)
來調試,但我沒有得到任何迴應。我可能錯過了什麼?
更新:var_dump
的意見荷蘭國際集團$this->canDo
/HelloWorlds/view.html.php返回此:
object(JObject)#43 (1) { ["_errors":protected]=> array(0) { } }
這裏的呼籲表示,意見函數/ HelloWorlds/view.html.php :
function display($tpl = NULL){
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->canDo = HelloWorldHelper::getActions();
if(count($errors = $this->get('Errors'))){
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->addToolBar($this->pagination->total);
parent::display($tpl);
$this->setDocument();
}
這是我正在遵循的確切教程。我多次檢查了代碼,並且出於某種原因,我似乎無法做到這一點。 是否有某種註冊/調整訪問選項,以便按鈕顯示? – TheGEffect 2013-03-21 13:52:27
如果您以超級用戶身份登錄,無需進行任何調整。據我所見,視圖是正確的。你寫了'var_dump($ this-> canDo)'什麼也不給。這裏我傾倒它:'object(JObject)#164(6){[「_errors」:protected] => array(0){} [「core.admin」] => bool(true)[「core。管理「] => bool(true)[」core.create「] => bool(true)[」core.delete「] => bool(true)[」core.edit「] => bool(true) 。可能是輔助文件中的問題? – 2013-03-21 14:11:45
用傭工代碼編輯主帖。 – TheGEffect 2013-03-21 14:16:18