title: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given Kohana 3.3.4
body: <p>Hey guys i have read and studied the kohana orm and auth modules. so i want to implement am admin section to my website. i get the error above and i have googled but can't seem to find the answer. am using Kohana 3.3.4
  so a created a controller called admin:</p>
  
  <pre><code> &lt;?php defined('SYSPATH') or die('No direct script access!');
  
  class Controller_Admin extends Controller_Dev
  {
      public $template = 'login_template';
  
      public function action_index()
      {
          if (Auth::instance()-&gt;logged_in()) {
              $this-&gt;redirect-&gt;body('admin/dashboard', 302);
          }
          $this-&gt;redirect('admin/login');
      }
  
      //lets login user
      public function action_login()
      {
          $view = new View('admin_login');
          $this-&gt;template-&gt;title = "Log in";
          if ($_POST) {
              $user = ORM::factory('user');
              $status = $user-&gt;login($_POST);
              if ($status) {
                  $this-&gt;redirect('admin/dashboard', 302);
              }
              else {
                  $errors = $_POST-&gt;errors('admin/login');
              }
          }
  
          // Display the login form
          $this-&gt;template-&gt;content = $view;
      }
  
      //lets logout user
      public function action_logout()
      {
          Auth::instance()-&gt;logout();
          $this-&gt;redirect('admin/login', 302);
      }
  
      //lets register new users
      public function action_register()
      {
          $view = View::factory('admin_register')
              -&gt;set('values', $_POST)
              -&gt;bind('errors', $errors);
          $this-&gt;template-&gt;title = "Registration Page";
  
      if ($_POST)
      {
          $user = ORM::factory('User');
              // The ORM::values() method is a shortcut to assign many values at once
  
          /* $external_values = array(
              // The unhashed password is needed for comparing to the password_confirm field
              'password' =&gt; Arr::get($_POST, 'password'),
          // Add all external values
          ) + Arr::get($_POST, '_external', array());
          $extra = Validation::factory($external_values)
              -&gt;rule('confirm_password', 'matches', array(':validation', ':field', 'password')); */
  
          try
          {
              //$test = $extra; //Arr::get($_POST, 'password');
              //$view-&gt;test = $test;
              $data = $this-&gt;request-&gt;post();
              $user-&gt;register($data);
              // Redirect the user to his page
              $this-&gt;redirect('admin/login');
          }
          catch (ORM_Validation_Exception $e)
          {
              $errors = $e-&gt;errors('models');
          }
      }
  
      $this-&gt;template-&gt;content = $view;
      }
  </code></pre>
  
  <p>and i created a model called user to help me validate the new user account before save it to the database:</p>
  
  <pre><code> &lt;?php defined('SYSPATH') or die('No direct access allowed.');
  
  class Model_User extends Model_Auth_User {
      //public $_table_name = 'users';
  
      protected $_has_many = array(
              'user_tokens'   =&gt; array('model' =&gt; 'user_token'),
              'roles'         =&gt; array('model' =&gt; 'role', 'through', 'roles_users'),
              // for facbook, google+, twitter and yahoo indentities
              'user_identity' =&gt; array(),
          );
  
      protected $_ignored_columns = array('confirm_password');
  
      public function rules()
      {
          return array(
              'username' =&gt; array(
                  array('not_empty'),
                  array('min_length', array(':value', 4)),
                  array('max_length', array(':value', 32)),
                  array(array($this, 'username_available')),
              ),
              'password' =&gt; array(
              'not_empty'  =&gt; NULL,
              'min_length' =&gt; array(5),
              'max_length' =&gt; array(42),
          ),
          'password_confirm' =&gt; array(
              'matches'    =&gt; array('password'),
          ),
          'email' =&gt; array(
              'not_empty'  =&gt; NULL,
              'min_length' =&gt; array(4),
              'max_length' =&gt; array(127),
              'email'      =&gt; NULL,
          ),
          );
      }
  
      public function filters()
      {
          return array(
              'password' =&gt; array(
                  array(array($this, 'hash_password')),
              ),
          );
      }
  
      public function username_available($username)
      {
          // There are simpler ways to do this, but I will use ORM for the sake of the example
          //return ORM::factory('Member', array('username' =&gt; $username))-&gt;loaded();
          // Check if the username already exists in the database
          return ! DB::select(array(DB::expr('COUNT(username)'), 'total'))
              -&gt;from('users')
              -&gt;where('username', '=', $username)
              -&gt;execute()
              -&gt;get('total');
      }
  
      public function hash_password($password)
      {
          // Do something to hash the password
      }
  
      public function register($array)
      {
          $this-&gt;values($array);
          $this-&gt;save();
          // Create a new user record in the database
  
  
          // Save the new user id to a cookie
          cookie::set('user', $id);
  
          return $id;
      }
  }
  </code></pre>
  
  <p>When i visit the admin registration page. it fails displaying an error which says: </p>
  
  <blockquote>
    <p>ErrorException [ Warning ]: call_user_func_array() expects parameter 1 to be a valid callback, no array or string given</p>
  </blockquote>
  
  <p>so please help me out because i think i might be missing something. Thanks in advance guys. Am using <strong>Kohana 3.3.4</strong></p>