2015-09-16 3 views
0

Мои данные успешно входят в базу данных. Но, не перенаправляясь на страницу register.php после вставки.Замечание PHP - yii base ErrorException (преобразование массива в строку) Yii

Показаны Обратите внимание, как:

PHP Примечание - юй \ база \ ErrorException

Массив для преобразования строки

Но я заметил, что, как только я это замена line return $this->refresh($post); от SiteController.php, все работает нормально.

Итак, почему это refresh($post) нерабочий .. как было хорошо работает на другой странице.

Я не понимаю, как решить эту проблему. Мне нужна помощь. Пожалуйста, помогите мне.

register.php

<?php 
use yii\helpers\Html; 
use yii\bootstrap\ActiveForm; 
?> 

<?php $form = ActiveForm::begin(['id' => 'register-form']); ?> 
    <?= $form->field($model, 'fname')->textInput()->label('First Name') ?> 
    <?= $form->field($model, 'lname')->textInput()->label('Last Name') ?> 
    <?= $form->field($model, 'email')->textInput()->label('Email') ?> 
    <?= $form->field($model, 'password')->passwordInput()->label('Password') ?> 
    <div class="form-group"> 
     <?= Html::submitButton('Register', ['class' => 'btn btn-success', 'name' => 'register-button' ]) ?> 
    </div> 
<?php ActiveForm::end(); ?> 

SiteController.php (контроллер)

<?php 
namespace app\controllers; 

use Yii; 
use yii\filters\AccessControl; 
use yii\web\Controller; 
use yii\filters\VerbFilter; 

class SiteController extends Controller 
{ 
    public function actionRegister() 
     { 
     $model = new RegisterForm(); 
     if ($model->load(Yii::$app->request->post())) 
     { 
      $post = Yii::$app->request->post('RegisterForm'); 

      Yii::$app->db->createCommand("INSERT INTO members SET FirstName=:fname, LastName=:lname, EmailID=:email, Password=:password", 
         array(':fname' => $post['fname'],':lname'=>$post['lname'],':email'=>$post['email'],':password'=>$post['password']))->execute(); 

      Yii::$app->session->setFlash('registerFormSubmitted'); 

      return $this->refresh($post); 
     } 
     return $this->render('register', [ 
      'model' => $model, 
     ]); 
     } 
} 

RegisterForm.php (модель)

<?php 

namespace app\models; 

use Yii; 
use yii\base\Model; 


class RegisterForm extends Model 
{ 
    public $fname; 
    public $lname; 
    public $email; 
    public $password; 


    public function rules() 
    { 
     return [ 
      [['fname','lname', 'email', 'password'], 'required'], 
      ['email', 'email'], 
     ]; 
    } 


    public function register() 
    { 
     if ($this->validate()) 
    { 
     /* 
       $form= new Form(); 
     $form->name=$this->name; 
     $form->email=$this->email; 
     $form->passowrd=$this->passowrd; 
     $form->save(); 
     */ 
      return true; 
     } 
     return false; 
    } 

} 

Вот экран печати ошибки. enter image description here

ответ

0

Вы можете легко увидеть на экране ошибки вы показали нам, что $anchor отправляется в метод с именем refresh() является массивом, и вы пытаетесь объединить его, как если бы это была строка. Вот и все.

Поскольку документация на этом экране говорит, что $anchor, как ожидается, будет строкой в ​​этом методе, единственной причиной остается тот факт, что вы отправляете неверные данные.

+0

Итак, какие изменения мне нужно сделать мистеру Хэнки. –

+0

Отправьте ему строку, которую вы хотите использовать в качестве якоря для вашего URL-адреса перенаправления. Если нет, тогда просто ничего не отправляйте, вместо '$ post'. –

+0

Да. За работой. Спасибо, мистер Хэнки. –

Смежные вопросы