Hi there everyone im new to PHP and Joomla and I have developed a component in Joomla but my code is giving me errors. I have tried to solve the problem but I’am unable to solve it. So can anyone suggest me what is the problem with my code? Thanks in advance.
Here are my two files:
1st 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
And 2nd is 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
And the errors are:
Notice: Trying to get property of non-object in C:\wamp\www amnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 26
Notice: Trying to get property of non-object in C:\wamp\www amnam.com\components\com_namnam\views\listrestaurant\view.html.php on line 29
Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 38
Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 48
Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 38
Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 48
Notice: Undefined property: namnamModellistrestaurant::$filter_order_Dir in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 76
Notice: Undefined property: namnamModellistrestaurant::$filter_order in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 77
Notice: Undefined property: namnamModellistrestaurant::$search in C:\wamp\www amnam.com\components\com_namnam\models\listrestaurant.php on line 80
I'd say the errors are pretty self explaining. What exactly is your problem?
In view.html.php
you have the variable $item
and try to access the properties $item->idcuisine
and $item->idcategory
but actually, $item
is just a string
$item = 'item';
and hence cannot have properties.
In listrestaurant.php
your class does not seem to have a property search
or filter_order
. You don't define them in your class, but I don't know about the parent class 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