php编码中的问题
大家好,我是PHP和Joomla的新手,我在Joomla中开发了一个组件,但是我的代码给了我错误。我试图解决这个问题,但解决不了。有人能告诉我我的代码有什么问题吗?提前谢谢 以下是我的两个文件: first view.html.phpphp编码中的问题,php,joomla,Php,Joomla,大家好,我是PHP和Joomla的新手,我在Joomla中开发了一个组件,但是我的代码给了我错误。我试图解决这个问题,但解决不了。有人能告诉我我的代码有什么问题吗?提前谢谢 以下是我的两个文件: first view.html.php defined('_JEXEC') or die('=;)'); jimport('joomla.application.component.view'); class namnamViewlistrestaurant extends JView {
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
第二个是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
错误是:
注意:试图在第26行的C:\wamp\www\namnamam.com\components\com\u namnamam\views\listrestaurant\view.html.php中获取非对象的属性
注意:试图获取C:\wamp\www\namnamnam.com\components\com\u namnamnam\views\listrestaurant\view.html.php第29行中非对象的属性
注意:未定义的属性:namnamModellistrestaurant::$search在第38行的C:\wamp\www\namnamam.com\components\com\u namnamam\models\listrestaurant.php中
注意:未定义的属性:namnamModellistrestaurant::$filter\u顺序为C:\wamp\www\namnamnam.com\components\com\u namnamam\models\listrestaurant.php,第48行
注意:未定义的属性:namnamModellistrestaurant::$search在第38行的C:\wamp\www\namnamam.com\components\com\u namnamam\models\listrestaurant.php中
注意:未定义的属性:namnamModellistrestaurant::$filter\u顺序为C:\wamp\www\namnamnam.com\components\com\u namnamam\models\listrestaurant.php,第48行
注意:未定义的属性:namnamModellistrestaurant::$filter\u order\u Dir,位于C:\wamp\www\namnamnam.com\components\com\u namnamam\models\listrestaurant.php的第76行
注意:未定义的属性:namnamModellistrestaurant::$filter\u顺序为C:\wamp\www\namnamnam.com\components\com\u namnamam\models\listrestaurant.php,第77行
注意:未定义的属性:namnamModellistrestaurant::$search在C:\wamp\www\namnamam.com\components\com\u namnamam\models\listrestaurant.php的第80行
我认为这些错误是可以自我解释的。你到底有什么问题 在
view.html.php
中,您拥有变量$item
并尝试访问属性$item->idcategory
和$item->idcategory
,但实际上,$item
只是一个字符串
$item = 'item';
因此不能有属性
在
listrestaurant.php
中,您的类似乎没有属性search
或filter\u order
。您没有在类中定义它们,但我不知道父类JModel
我认为这些错误是可以自我解释的。你到底有什么问题
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
在view.html.php
中,您拥有变量$item
并尝试访问属性$item->idcategory
和$item->idcategory
,但实际上,$item
只是一个字符串
$item = 'item';
因此不能有属性
在
listrestaurant.php
中,您的类似乎没有属性search
或filter\u order
。您没有在类中定义它们,但我不知道父类JModel
如果您是PHP新手,就不应该使用Joomla。如果您是PHP新手,你不应该使用Joomla。这是父类可以在这个问题上进行elobrate。几乎我80%的错误都没有了,但还有两个错误。请帮助我:注意:尝试在C:\wamp\www\namnamam.com\components\com\u namam\views\listrestaurant\view.html.php第28行获取非对象的属性注意:尝试获取C:\wamp\www\namnamam.com\components\com\u namnamam\views\listrestaurant\view.html.php行中非对象的属性31@anwar例如我不知道你的申请。你必须给$item
分配一个有效的对象。这是父类,你可以在这个问题上编辑它。我几乎80%的错误都没有了,但是还有两个错误。请帮助我:注意:在第28行的C:\wamp\www\namnamam.com\components\com\u namam\views\liststaurant\view.html.php中尝试获取非对象的属性注意:试图在线获取C:\wamp\www\namnamnam.com\components\com\u namnamnam\views\listrestaurant\view.html.php中非对象的属性31@anwar例如我不知道你的申请。您必须为$item
分配一个有效的对象。不,不是。这和上面的课一样。如果你自己的问题不是真实的答案,你也不应该回答。无论如何,你应该知道你的类中有哪些属性可用,如果它说search
不可用,那么它就不可用,你不能使用它。不,它不可用。这和上面的课一样。如果你自己的问题不是真实的答案,你也不应该回答。无论如何,你应该知道哪些属性在你的类中可用,如果它说search
不可用,那么它就不可用,你不能使用它。
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