title: joomla 1.6 component creation error on model
body: <p>I am trying to develop a joomla 1.6 component. I am getting the following error </p>
  
  <blockquote>
    <p>Fatal error: Call to a member function getKeyName() on a non-object in
    D:\xampp\htdocs\lab\libraries\joomla\application\component\modeladmin.php
    on line 327</p>
  </blockquote>
  
  <p>my model code is below </p>
  
  <pre><code>    &lt;?php
  // No direct access to this file
  defined('_JEXEC') or die('Restricted access');
  
  // import Joomla modelform library
  jimport('joomla.application.component.modeladmin');
  
  /**
   * HelloWorld Model
   */
  class CrudModelHiWorld extends JModelAdmin
  {
      /**
       * Returns a reference to the a Table object, always creating it.
       *
       * @param   type    The table type to instantiate
       * @param   string  A prefix for the table class name. Optional.
       * @param   array   Configuration array for model. Optional.
       * @return  JTable  A database object
       * @since   1.6
       */
      public function getTable($type = 'Crud', $prefix = 'CrudTable', $config = array()) 
      {
          return JTable::getInstance($type, $prefix, $config);
      }
      /**
       * Method to get the record form.
       *
       * @param   array   $data       Data for the form.
       * @param   boolean $loadData   True if the form is to load its own data (default case), false if not.
       * @return  mixed   A JForm object on success, false on failure
       * @since   1.6
       */
      public function getForm($data = array(), $loadData = true)
      {   
          // Get the form.
  
          $form = $this-&gt;loadForm('com_crud.hiworld', 'hiworlds', array('control' =&gt; 'jform', 'load_data' =&gt; $loadData));
          if (empty($form)) 
          {
              return false;
          }           
          return $form;
      }
      /**
       * Method to get the data that should be injected in the form.
       *
       * @return  mixed   The data for the form.
       * @since   1.6
       */
      protected function loadFormData() 
      {
          // Check the session for previously entered form data.
          $data = JFactory::getApplication()-&gt;getUserState('com_crud.edit.hiworld.data', array());
          if (empty($data)) 
          {
              $data = $this-&gt;getItem();
          }
          return $data;
      }
  }
  </code></pre>
  
  <p>Thanks</p>