2010-05-11 77 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