2010-05-11 161 views
2

大家好我有新的PHP和Joomla,我已經在Joomla開發了一個組件,但是我的代碼給了我錯誤。我試圖解決這個問題,但我無法解決它。所以任何人都可以告訴我我的代碼有什麼問題?提前致謝。php編碼中的問題

這裏是我的兩個文件:

1 view.html.php

defined('_JEXEC') or die('=;)'); 

jimport('joomla.application.component.view'); 

class namnamViewlistrestaurant extends JView 
{ 
    function display($tpl = null) 
    { 
     $item = 'item'; 
     RestUser::RestrictDirectAccess(); 
     //-- Custom css 
     JHTML::stylesheet('style.css', 'components/com_namnam/assets/css/'); 

     $cuisine=Lookups::getLookup('cuisine'); 
     $lists['cuisine'] = JHTML::_('select.genericlist', $cuisine, 'idcuisine[]', 'class="inputbox" size="7"', 'value', 'text', $item->idcuisine); 

     $category=Lookups::getLookup('restcategory'); 
     $lists['category'] = JHTML::_('select.genericlist', $category, 'idcategory[]', 'class="inputbox" multiple="multiple" size="7"', 'value', 'text', $item->idcategory); 

     $items = & $this->get('Data'); 
     $pagination =& $this->get('Pagination'); 

     $lists = & $this->get('List'); 

     $this->assignRef('items', $items); 
     $this->assignRef('pagination', $pagination); 
     $this->assignRef('lists', $lists); 
     parent::display($tpl); 

    }//function 

}//class 

和2是listrestaurant.php

defined('_JEXEC') or die('=;)'); 

jimport('joomla.application.component.model'); 

class namnamModellistrestaurant extends JModel 
{ 
    var $_data; 
    var $_total = null; 
    var $_pagination = null; 

    function __construct() 
    { 
     parent::__construct(); 
     global $mainframe, $option; 

     $limit  = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int'); 
     $limitstart = $mainframe->getUserStateFromRequest($option.'.limitstart', 'limitstart', 0, 'int'); 
     $limitstart = ($limit != 0 ? (floor($limitstart/$limit) * $limit) : 0); 
     $this->setState('limit', $limit); 
     $this->setState('limitstart', $limitstart); 
    } 

    function _buildQuery() 
    { 
     $where = array(); 
     $where[]=" idowner=".RestUser::getUserID()." "; 
     if ($this->search) 
     { 
      $where[] = 'LOWER(name) LIKE \''. $this->search. '\''; 
     } 

     $where =(count($where)) ? ' WHERE ' . implode(' AND ', $where) : ''; 
     $orderby = ''; 

     #_ECR_MAT_FILTER_MODEL1_ 

     if (($this->filter_order) && ($this->filter_order_Dir)) 
     { 
      $orderby = ' ORDER BY '. $this->filter_order .' '. $this->filter_order_Dir; 
     } 

     $this->_query = ' SELECT *' 
     . ' FROM #__namnam_restaurants ' 
     . $where 
     . $orderby 
     ; 

     return $this->_query; 
    } 


    function getData() 
    { 
     if (empty($this->_data)) 
     { 
      $query = $this->_buildQuery(); 
      $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); 
     } 
     return $this->_data; 
    } 

    function getList() 
    { 
     // table ordering 
     $lists['order_Dir'] = $this->filter_order_Dir; 
     $lists['order']  = $this->filter_order; 

     // search filter 
     $lists['search']= $this->search; 

     return $lists; 
    } 

    function getTotal() 
    { 
     // Load the content if it doesn't already exist 
     if (empty($this->_total)) 
     { 
      $query = $this->_buildQuery(); 
      $this->_total = $this->_getListCount($query); 
     } 

     return $this->_total; 
    } 

    function getPagination() 
    { 
     // Load the content if it doesn't already exist 
     if (empty($this->_pagination)) 
     { 
      jimport('joomla.html.pagination'); 
      $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit')); 
     } 

     return $this->_pagination; 
    } 




}//class 

,並且錯誤是:

注意:試圖在C中獲取非對象的屬性: \ wamp \ www \ namnam.com \ components \ com_namnam \ views \ listrestaurant \ view.html.php on line 26

注意:試圖獲取C:\ wamp \ www \ namnam.com中非對象的屬性\ components \ com_namnam \ views \ listrestaurant \ view.html.php on line 29

注意:未定義的屬性:namnamModellistrestaurant :: $搜索C:\ wamp \ www \ namnam.com \ components \ com_namnam \ models \ listrestaurant .PHP在線38

公告:未定義的屬性:用C namnamModellistrestaurant :: $ filter_order:\ WAMP \ WWW \ namnam.com \分量\ com_namnam \型號\ listrestaurant.php上線48

注意:Undefined屬性:namnamModellistrestaurant :: $在C:\ wamp \ www \ namnam.com \ components \ com_namnam \ models \ listrestaurant.php中搜索38行

注意:未定義的屬性:namnamModellistrestaurant :: $ filter_order in在線48上的C:\ wamp \ www \ namnam.com \ components \ com_namnam \ models \ listrestaurant.php

注意:未定義的屬性:namnamModellistrestaurant :: $ filter_order_Dir在C:\ wamp \ www \ namnam.com \ components \ com_namnam \ models \ listrestaurant.php on line 76

注意:未定義的屬性:namnamModellistrestaurant :: $ filter_order在C:\ wamp \ www \ namnam.com \ components \ com_namnam \ models \ listrestaurant.php on line 77

公告:未定義的屬性:namnamModellistrestaurant ::在C $搜索:\ WAMP \ WWW \ namnam.com \分量\ com_namnam \型號\上線listrestaurant.php 80

+3

如果你是PHP的新手,你不應該使用Joomla。 – 2010-05-11 06:46:36

回答

1

我想說的錯誤是非常自我解釋。你的問題到底是什麼?

view.html.php你有可變$item並嘗試訪問屬性$item->idcuisine$item->idcategory,但實際上,$item只是一個字符串

$item = 'item'; 

,因此不能有屬性。


listrestaurant.php類似乎並不有一個屬性searchfilter_order。你沒有在你的班級中定義他們,但我不知道父類JModel

+0

這是父類可以üPLZ在這個問題上 – anwar 2010-05-11 08:42:04

+0

謝謝很多差不多我的80%的錯誤都消失了,但仍然有2個錯誤有PLZ幫助我: 注意:試圖獲取非對象的屬性在C:\ wamp \ www \ namnam.com \ components \ com_namnam \ views \ listrestaurant \ view.html.php on line 28 注意:試圖獲取C:\ wamp \ www \ namnam.com中非對象的屬性\ components \ com_namnam \ views \ listrestaurant \ view.html.php 31行 – anwar 2010-05-11 11:17:12

+0

我需要知道做了什麼修改????????? – anwar 2010-05-11 11:17:45

-1
defined('_JEXEC') or die('=;)'); 

jimport('joomla.application.component.model'); 

class namnamModelajax extends JModel 
{ 
var $_data; 
var $_total = null; 
var $_pagination = null; 

function __construct() 
{ 
    parent::__construct(); 
    global $mainframe, $option; 

    $limit  = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int'); 
    $limitstart = $mainframe->getUserStateFromRequest($option.'.limitstart', 'limitstart', 0, 'int'); 
    $limitstart = ($limit != 0 ? (floor($limitstart/$limit) * $limit) : 0); 
    $this->setState('limit', $limit); 
    $this->setState('limitstart', $limitstart); 
} 

function _buildQuery() 
{ 
    $where = array(); 
    $where[]=" idowner=".RestUser::getUserID()." "; 
    if ($this->search) 
    { 
     $where[] = 'LOWER(name) LIKE \''. $this->search. '\''; 
    } 

    $where =(count($where)) ? ' WHERE ' . implode(' AND ', $where) : ''; 
    $orderby = ''; 

    #_ECR_MAT_FILTER_MODEL1_ 

    if (($this->filter_order) && ($this->filter_order_Dir)) 
    { 
     $orderby = ' ORDER BY '. $this->filter_order .' '. $this->filter_order_Dir; 
    } 

    $this->_query = ' SELECT *' 
    . ' FROM #__namnam_restaurants ' 
    . $where 
    . $orderby 
    ; 

    return $this->_query; 
} 


function getSponRest($limiter) 
{ 
    $db=$this->_db; 
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 and issponsored=1 limit $limiter"; 
    $db->setQuery($query); 
    //$result =$db->loadResult(); 
    $result =$db->loadObjectList(); 
    return $result; 
} 

function getAllRestaurants($limiter) 
{ 
    $db=$this->_db; 
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 limit $limiter"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 

function getStaffFavs($limiter) 
{ 
    $db=$this->_db; 
    $query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 and stafffav=1 limit $limiter"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 


function getCuisines() 
{ 
    $db=$this->_db; 
    $query="select id as id,name as name from jos_namnam_cuisine where id in(select distinct idcuisine from jos_namnam_relcuisine)"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 


function getCategories() 
{ 
    $db=$this->_db; 
    $query="select id as id,name as name from jos_namnam_restcategory where id in(select distinct idcategory from jos_namnam_relcategory)"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 
function getRestByCuisine($limiter,$id) 
{ 
    $db=$this->_db; 
    $query="SELECT j.id as id, j.restaurant_name as name FROM jos_namnam_restaurants j, jos_namnam_relcuisine b where b.idforeign=j.id and b.idcuisine=$id limit $limiter"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 
function getRestByCategory($limiter,$id) 
{ 
    $db=$this->_db; 
    $query="SELECT j.id as id, j.restaurant_name as name FROM jos_namnam_restaurants j, jos_namnam_relcategory b where b.idforeign=j.id and b.idcategory=$id limit $limiter"; 
    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 
} 

function RegisterUser($post) 
{ 

} 

function login() 
{ 
    // Check for request forgeries 
    //JRequest::checkToken('request') or jexit('Invalid Token'); 

    global $mainframe; 

    $options = array(); 
    $options['remember'] = JRequest::getBool('remember', false); 
    $options['return'] = $return; 

    $credentials = array(); 
    //$credentials['username'] = JRequest::getVar('username', '', 'method', 'username'); 
    //$credentials['password'] = JRequest::getString('passwd', '', 'post', JREQUEST_ALLOWRAW); 

    $credentials['username'] = JRequest::getString('username'); 
    $credentials['password'] = JRequest::getString('passwd'); 

    //preform the login action 
    $error = $mainframe->login($credentials, $options); 

    if(!JError::isError($error)) 
    { 
     //login succeeded 
     return true; 
    } 
    else 
    { 
     //login failed 
     //$arrayError[0]="#error"; 
     //$arrayError[1]="Invalid Username or Password"; 
     //$arrayError[2]="#error"; 
     //return '{"jsonValidateReturn":'.json_encode($arrayError).'}'; 
     print_r($error); 
     $msg="Please enter correct Username and Password"; 
     return $msg; 

    } 
} 



function getRestDetails($restID){ 

    $db=$this->_db; 
    //$query="SELECT id as id,restaurant_name as name FROM #__namnam_restaurants where published=1 limit $limiter"; 
    $query='select r.id as id, r.restaurant_name as name, 
     (select group_concat(a.name) as cuisinename from jos_namnam_cuisine a,jos_namnam_relcuisine b 
     where a.id=b.idcuisine and b.idforeign=r.id) as cuisine, 
     (select group_concat(rcat.name) as categoryname from jos_namnam_restcategory rcat,jos_namnam_relcategory relcat 
     where rcat.id=relcat.idcategory and relcat.idforeign=r.id) as category, 
     r.budget as budget, 
     (SELECT group_concat(concat_ws("/",cty.cityname,dst.districtname,cnt.name)) as location 
     FROM jos_namnam_restlocations restloc,jos_namnam_cities cty,jos_namnam_districts dst, 
     jos_namnam_countries cnt where cty.id=restloc.idcity and dst.id=restloc.iddistrict and 
     cnt.id=restloc.idcountry and restloc.idrestaurant=r.id) as locations, 
     r.hotline as hotline, 
     r.logo as logo, 
     (select group_concat(rrloc.phone) as phone from jos_namnam_restlocations rrloc where rrloc.idrestaurant=r.id) as branchphones 
     from jos_namnam_restaurants r where r.id='.$restID; 

    $db->setQuery($query); 
    $result =$db->loadObjectList(); 
    return $result ; 


} 


function getData() 
{ 
    if (empty($this->_data)) 
    { 
     $query = $this->_buildQuery(); 
     $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); 
    } 
    return $this->_data; 
} 

function getList() 
{ 
    // table ordering 
    $lists['order_Dir'] = $this->filter_order_Dir; 
    $lists['order']  = $this->filter_order; 

    // search filter 
    $lists['search']= $this->search; 

    return $lists; 
} 

function getTotal() 
{ 
    // Load the content if it doesn't already exist 
    if (empty($this->_total)) 
    { 
     $query = $this->_buildQuery(); 
     $this->_total = $this->_getListCount($query); 
    } 

    return $this->_total; 
} 

function getPagination() 
{ 
    // Load the content if it doesn't already exist 
    if (empty($this->_pagination)) 
    { 
     jimport('joomla.html.pagination'); 
     $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit')); 
    } 

    return $this->_pagination; 
} 

}//class 
+0

這是父類 – anwar 2010-05-11 08:38:51

+0

不是。這與上面的課程相同。如果這不是真正的答案,你也不應該回答你自己的問題。無論如何,你應該知道你的課程中有哪些屬性可用,如果它說「搜索」不可用,那麼它不是,你不能使用它。 – 2010-05-11 08:51:44