2016-02-05 119 views
0

目前,我一直在嘗試熟悉爲Joomla 3.4.8編寫自定義組件。因此,我在Raspberry Pi 2上安裝了一個新的joomla網站用於測試目的。一切都在工作,因爲它schould。Joomla自定義組件 - 加載表單文件時出錯

然後我開始做Joomla自己提供的'Developing an MVC Component'教程。一切工作正常,直到7'Using the database'。

雖然這一點談到數據庫,但問題是讓字段類型工作。即當我想添加一個新的菜單項(在管理員部分),並且我選擇了自定義菜單項類型時,我收到一個錯誤,指出「Error loading form file」。

我一直在試圖找到幾天的錯誤,沒有成功。我甚至到目前爲止追蹤引發這個錯誤的joomla框架內的代碼行。代碼行在/libraries/legacy/model/form.php(行192)內。在這條線上,您可以看到$this->preprocessForm($form, $data);。但是代碼甚至不會輸入這個方法,它只是拋出一個異常。

我比較了從正常運行的那些由線192之前添加以下語句(發現here)的$form$data變量:

echo "<pre>"; print_r($arr); echo "</pre>"; 

$form變量沒有任何區別。然而,變量$data略有不同。不幸的是,我對這些概念很陌生,所以我不知道可能會出錯或在哪裏尋找問題。

希望你們有人能幫助我......

完成這裏是$data變量的輸出時,觸發錯誤:

Array 
(
    [parent_id] => 1 
    [level] => 
    [lft] => 
    [rgt] => 
    [alias] => 
    [id] => 
    [menutype] => mainmenu 
    [title] => 
    [note] => 
    [path] => 
    [link] => index.php?option=com_helloworld&view=helloworld 
    [type] => component 
    [published] => 
    [component_id] => 10000 
    [checked_out] => 
    [checked_out_time] => 
    [browserNav] => 0 
    [access] => 
    [img] => 
    [template_style_id] => 0 
    [params] => Array 
     (
      [menu-anchor_title] => 
      [menu-anchor_css] => 
      [menu_image] => 
      [menu_text] => 1 
      [page_title] => 
      [show_page_heading] => 
      [page_heading] => 
      [pageclass_sfx] => 
      [menu-meta_description] => 
      [menu-meta_keywords] => 
      [robots] => 
      [secure] => 0 
     ) 
    [home] => 0 
    [language] => 
    [client_id] => 
    [request] => Array 
     (
      [option] => com_helloworld 
      [view] => helloworld 
     ) 
    [menuordering] => 0 
    [toggle_modules] => 1 
) 

回答

0

好吧!我終於解決了這個問題。不幸的是這是一個非常愚蠢的錯誤...

首先我注意到方法preprocessForm($form, $data)已被子類覆蓋。因此我的echo聲明不會被執行。這給我帶來了我的xml文件在<joomla-root>/components/com_helloworld/views/helloworld/tmpl/default.xml加載點。

不幸的是,它沒有奏效。這是由於xml文件中的一個小錯誤。這個錯誤是非常簡單和愚蠢:

<fieldset name="request"> 
     <field 
      name="id" 
      type="helloworld" 
      label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL" 
      description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC" 
      /> 
     </field> 
</fieldset> 

我乾脆關閉了field標籤兩次,其中第二結束標記在本教程的前一步驟中使用。

非常愚蠢的錯誤,花了我幾個小時。至少我對joomla代碼有了一些見解。希望這篇文章可以避免其他人在無數個小時尋找這樣一個小小的錯誤。