HTML Button calling controller/action

19,396

The CHtml button() method is literally just a button, the second parameter it accepts should be an array of key/value pairs, rather than an array of arrays (like you have in your example) see CHtml::button() for more info. A way to use this method would be for example;

echo CHtml::button('myButton',array(
    'class' => 'buttonClass',
    'id'    => 'buttonId',
));

This would output something like:

<input class="buttonClass" id="buttonId" name="yt1" type="button" value="myButton">

If you want a button to submit a form, you can use CHtml::submitButton() which will submit the form it is contained within.

If you want a button to actually redirect the user to a separate page without submitting anything then I think the best solution would be use an image with an anchor link, or use jQuery to redirect the user once the button has been pressed.

If that's the case, here's a question with a couple of answers that might help you out: How to make a button redirect to another page using jQuery or just Javascript

Share:
19,396
Shumaila Khan
Author by

Shumaila Khan

Updated on June 04, 2022

Comments

  • Shumaila Khan
    Shumaila Khan almost 2 years

    I am trying to create html button in Yii on button click I want to call a UserController.php and Actioncreate .

    I am doing like this ,

     echo CHtml::button('Signup', array('button' => array('Users/create'))); ?>
    

    But it's giving me following error

    htmlspecialchars() expects parameter 1 to be string, array given 
    

    This is stack trace

    D:\wamp\www\yii\framework\web\helpers\CHtml.php(85)
    
    73      */
    74     public static $liveEvents = true;
    75 
    76     /**
    77      * Encodes special characters into HTML entities.
    78      * The {@link CApplication::charset application charset} will be used for encoding.
    79      * @param string $text data to be encoded
    80      * @return string the encoded data
    81      * @see http://www.php.net/manual/en/function.htmlspecialchars.php
    82      */
    83     public static function encode($text)
    84     {
    85         return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
    86     }
    87 
    88     /**
    89      * Decodes special HTML entities back to the corresponding characters.
    90      * This is the opposite of {@link encode()}.
    91      * @param string $text data to be decoded
    92      * @return string the decoded data
    93      * @see http://www.php.net/manual/en/function.htmlspecialchars-decode.php
    94      * @since 1.1.8
    95      */
    96     public static function decode($text)
    97     {
    
    Stack Trace
    #0  
    +
     D:\wamp\www\yii\framework\web\helpers\CHtml.php(85): htmlspecialchars(array("Users/create"), 3, "UTF-8")
    #1  
    +
     D:\wamp\www\yii\framework\web\helpers\CHtml.php(2216): CHtml::encode(array("Users/create"))
    #2  
    +
     D:\wamp\www\yii\framework\web\helpers\CHtml.php(140): CHtml::renderAttributes(array("button" => array("Users/create"), "name" => "yt1", "type" => "button", "value" => "Signup"))
    #3  
    +
     D:\wamp\www\yii\framework\web\helpers\CHtml.php(436): CHtml::tag("input", array("button" => array("Users/create"), "name" => "yt1", "type" => "button", "value" => "Signup"))
    #4  
    –
     D:\wamp\www\nurseweb\protected\views\site\login.php(50): CHtml::button("Signup", array("button" => array("Users/create")))
    
    45         <?php echo $form->error($model,'rememberMe'); ?>
    46     </div>
    47 
    48     <div class="row buttons">
    49         <?php echo CHtml::submitButton('Login');  
    50  echo CHtml::button('Signup', array('button' => array('Users/create'))); ?>
    51 <?php $this->endWidget(); ?>
    52 </div><!-- form -->
    
    #5  
    +
     D:\wamp\www\yii\framework\web\CBaseController.php(127): require("D:\wamp\www\nurseweb\protected\views\site\login.php")
    #6  
    +
     D:\wamp\www\yii\framework\web\CBaseController.php(96): CBaseController->renderInternal("D:\wamp\www\nurseweb\protected\views\site\login.php", array("model" => LoginForm), true)
    #7  
    +
     D:\wamp\www\yii\framework\web\CController.php(870): CBaseController->renderFile("D:\wamp\www\nurseweb\protected\views\site\login.php", array("model" => LoginForm), true)
    #8  
    +
     D:\wamp\www\yii\framework\web\CController.php(783): CController->renderPartial("login", array("model" => LoginForm), true)
    #9  
    –
     D:\wamp\www\nurseweb\protected\controllers\SiteController.php(98): CController->render("login", array("model" => LoginForm))
    
    093             // validate user input and redirect to the previous page if valid
    094             if($model->validate() && $model->login())
    095                 $this->redirect(Yii::app()->user->returnUrl);
    096         }
    097         // display the login form
    098         $this->render('login',array('model'=>$model));
    099     }
    100 
    101     /**
    102      * Logs out the current user and redirect to homepage.
    103      */
    
    #10     
    +
     D:\wamp\www\yii\framework\web\actions\CInlineAction.php(50): SiteController->actionLogin()
    #11     
    +
     D:\wamp\www\yii\framework\web\CController.php(309): CInlineAction->runWithParams(array("r" => "site/login"))
    #12     
    +
     D:\wamp\www\yii\framework\web\CController.php(287): CController->runAction(CInlineAction)
    #13     
    +
     D:\wamp\www\yii\framework\web\CController.php(266): CController->runActionWithFilters(CInlineAction, array())
    #14     
    +
     D:\wamp\www\yii\framework\web\CWebApplication.php(283): CController->run("login")
    #15     
    +
     D:\wamp\www\yii\framework\web\CWebApplication.php(142): CWebApplication->runController("site/login")
    #16     
    +
     D:\wamp\www\yii\framework\base\CApplication.php(162): CWebApplication->processRequest()
    #17     
    –
     D:\wamp\www\nurseweb\index.php(13): CApplication->run()
    
    08 defined('YII_DEBUG') or define('YII_DEBUG',true);
    09 // specify how many levels of call stack should be shown in each log message
    10 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
    11 
    12 require_once($yii);
    13 Yii::createWebApplication($config)->run();
    

    Can anyone tell me what the meaning of this error is and also guided me for the solution?