2015-04-07 79 views
1

好吧首先,我正在与Yii 2基本不高级版本。yii 2.0管理创建不工作从ActiveForm

好吧,我已经做到了这一点,以便我的日志功能可以将数据从数据库中提取出来,并将其作为硬编码的用户。然后我在索引视图中显示数据库中所有管理员的gridview及其ID。我试图创建一个管理员可以创建另一个管理员的创建页面。

我确实设法得到这个工作,但对于我的生活,我无法找到我做了什么使这个功能停止工作。

型号\ user.php的

<?php 

namespace app\models; 
use yii\base\NotSupportedException; 
use yii\db\ActiveRecord; 
use yii\web\IdentityInterface; 
use yii\data\ActiveDataProvider; 
/** 
* User model 
* 
* @property integer $id 
* @property string $username 
* @property string $authkey 
* @property string $password 
* @property string $accessToken 
*/ 
class User extends ActiveRecord implements IdentityInterface 
{ 


/** 
* @inheritdoc 
*/ 
public static function tableName() 
{ 
    return 'Users'; 
} 


public function rules(){ 
     return [ 
      [['username','password'], 'required'] 
     ]; 
} 



public static function findAdmins(){ 
    $query = self::find(); 

    $dataProvider = new ActiveDataProvider([ 
     'query' => $query, 
    ]); 

    return $dataProvider; 

} 


/** 
* @inheritdoc 
*/ 
public static function findIdentity($id) 
{ 
    return static::findOne(['id' => $id]); 
} 



/** 
* @inheritdoc 
*/ 
public static function findIdentityByAccessToken($token, $type = null) 
{ 
    throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); 
} 

/** 
* Finds user by username 
* 
* @param string  $username 
* @return static|null 
*/ 
public static function findByUsername($username) 
{ 
    return static::findOne(['username' => $username]); 
} 

/** 
* @inheritdoc 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* @inheritdoc 
*/ 
public function getAuthKey() 
{ 
    return static::findOne('AuthKey'); 
} 

/** 
* @inheritdoc 
*/ 
public function validateAuthKey($authKey) 
{ 
    return static::findOne(['AuthKey' => $authKey]); 
} 

/** 
* Validates password 
* 
* @param string $password password to validate 
* @return boolean if password provided is valid for current user 
*/ 
public function validatePassword($password) 
{ 
    return $this->password === $password; 
} 
} 

查看\ ADMIN \的index.php

<?php 
    use yii\helpers\Html; 
    use yii\grid\GridView; 

    /* @var $this yii\web\View */ 
    $this->title = 'Admins'; 
    $this->params['breadcrumbs'][] = $this->title; 
    ?> 
    <div class="site-about"> 
     <h1><?= Html::encode($this->title) ?></h1> 
     <p> 
      <?= Html::a('Create Admin', ['create'], ['class' => 'btn btn-success']);?> 
     </p> 
     <?php 
      if(isset($user_id)){ 
       print_r($user_id); 

      } 
     ?> 

     <?= GridView::widget([ 
      'dataProvider' => $dataProvider, 
      'columns' => [ 
       'id', 
       'username', 
       'password', 

       ['class' => 'yii\grid\ActionColumn'], 
      ], 
     ]); ?> 

    </div> 

所以此工程,并连接到我的数据库罚款。它显示了正确的栏目等。

现在,我会告诉你这是不工作的两种观点,A create.php这使得_form.php这个

意见\ ADMIN \ create.php:

<?php 
    use yii\helpers\Html; 


    /* @var $this yii\web\View */ 
    $this->title = 'Create Admin'; 
    $this->params['breadcrumbs'][] = ['label' => 'admin', 'url' => ['index']]; 
    $this->params['breadcrumbs'][] = $this->title; 
    if(isset($username)){ 
    print_r($username); 
    echo '</br>'; 
    print_r($password); 

    } 
    ?> 
    <div class="site-about"> 
     <h1><?= Html::encode($this->title) ?></h1> 
     <?= $this->render('_form',[ 
      'model' => $model 
     ]); 
     ?> 



    </div> 

意见\ admin_form.php:

<?php 

    use yii\helpers\Html; 
    use yii\widgets\ActiveForm; 



    /* @var $model app\models\Users */ 
    /* @var $form yii\widgets\ActiveForm */ 
    ?> 

    <div class="admin-form"> 

     <?php $form = ActiveForm::begin(); ?> 



     <?= $form->field($model, 'username')->textInput(); ?> 
     <?= $form->field($model, 'password')->textInput(); ?> 



     <div class="form-group"> 
      <?= Html::submitButton('create', ['class' => 'btn btn-success']) ?> 
     </div> 

     <?php ActiveForm::end(); ?> 

    </div> 

现在终于我的控制器:

个控制器\ AdminController.php:

<?php 

    namespace app\controllers; 

    use Yii; 
    use yii\web\Controller; 
    use yii\filters\VerbFilter; 
    use yii\filters\AccessControl; 
    use app\models\User; 





    class AdminController extends Controller 
    { 
     public function behaviors() 
     { 
      return [ 
       'verbs' => [ 
        'class' => VerbFilter::className(), 
        'actions' => [ 
         'delete' => ['post'], 
        ], 
       ], 
      ]; 
     } 

     public function actions() 
     { 
      return [ 
       'error' => [ 
        'class' => 'yii\web\ErrorAction', 
       ], 
       'captcha' => [ 
        'class' => 'yii\captcha\CaptchaAction', 
        'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, 
       ], 
      ]; 
     } 

     public function actionIndex() 
     { 
      $searchModel = new User; 
      $dataProvider = $searchModel->findAdmins(); 

      return $this->render('index',[ 
       'dataProvider' => $dataProvider 
        ]); 
     } 

     public function actionCreate(){ 
      $model = new User; 

      $request = Yii::$app->request; 
      $post = $request->post(); 
      $username = "usernameStandard"; 
      $password = "passwordStandard"; 
      if($model->load(Yii::$app->request->post())){ 
       $username = $post['User']['username']; 
       $password = $post['User']['password']; 
      } 
      return $this->render('create',[ 
       'model' => $model, 
       'username' => $username, 
       'password' => $password 
        ]); 
     } 

    } 

那么好吧所以,当我尝试这样做,我填写表格从create.php(与渲染_form.php这个)。当我点击创建按钮。我print_r()后的结果,以确保没问题,它确实再次显示页面的帖子结果。但是它不会在我的数据库中创建一个新用户。

真的卡在这里任何人都可以帮忙吗?

回答