موقع offres d'emplois بإستعمال YII2 Framework الجزء الثالت


فهاد الجزء الثالت من موقع offres d'emplois بإستعمال YII2 Framework غادي نكملو الملفات الخاصين بالفئات أولا الملف لي غادي تكون فيه الفورم لي كتمكن من إضافة فئة والملف لي غادي يمكن من عرض جميع الفئات لي كاينين فقاعدة البيانات.

نظرة سريعة بالفيديو

1- الملف Category.php

من بعد فالمجلد models كنزيد ملف كنسميه Category.php ولي عبارة عن model فيه fonction rules لي كتحدد الحقول لي خاصها تكون عامرة والحقول لي خصها تكون string ولا integer منبعد كاين getJobs لي كتدير la relation مابين الجدول categories وjobs ولي كتقولنا بلي كل categorie عندها offre ولا بزاف ديال les offres الكود ديال الملف هو :

                                <?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "{{%categories}}".
 *
 * @property integer $id
 * @property string $name
 * @property string $created_at
 */
class Category extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'categories';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['name'], 'required'],
            [['created_at'], 'safe'],
            [['name'], 'string', 'max' => 255],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'name' => 'Name',
            'created_at' => 'Created At',
        ];
    }
    public function getJobs(){
        return $this->HasMany(Job::className(),['category_id'=>'id']);
    }
}

                            

2- الملف categories/create.php

فالمجلد views فيه زيد مجلد جديد سميه categories فيه زيد ملف جديد سميه create.php هادا الملف لي فيه الفورم لي كتمكن المستخدم من إضافة categorie جديدة فمنبعد مكيدخل المعلومات ديالو فالحقل هاد المعلومات كتمشي لل fonction actionCreate لي كاينة ف CategoriesController الكود ديال الملف هو :

                                <?php

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

/* @var $this yii\web\View */
/* @var $model app\models\Category */
/* @var $form ActiveForm */
?>
<div class="row">
    <h3 class="text-info">Ajouter une catégorie</h3>
    <hr>
    <div class="col-md-4 col-md-offset-4">
        <?php $form = ActiveForm::begin(); ?>
            <?= $form->field($categorie, 'name')->label('Titre*') ?>    
            <div class="form-group">
                <?= Html::submitButton('Valider', ['class' => 'btn btn-primary']) ?>
            </div>
        <?php ActiveForm::end(); ?>
    </div>
</div><!-- categories-create -->
                            

3- الملف categories/index.php

دائما فالمجلد categories فيه زيد ملف جديد سميه index.php هادا الملف لي فيه الكود لي كيمكن من عرض جميع les catégories لي عندنا فقاعدة البيانات من بعد مكنستقبلوهم من fonction actionIndex لي فالملف CategoriesController.php كنخدم ب foreach لي كتمكني من عرض كل فئة فبلاصتها بالإضافة للpagination لي كتمكن من عرض 10 ديال les catégories فالصفحة وأيضا كاين الكود لي كيعرض رسائل النجاح وملي كيضغط المستخدم على شي فئة كيتوجه للصفحة لي كتعرض فرص العمل حسب الفئات الكود ديال الملف هو :

                                <?php
/* @var $this yii\web\View */
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<div class="row">
<div class="col-md-4">
<h1 class="text-info">Catégories</h1>
</div>
<div class="col-md-8">
<a href="/yii2_job_website/web/index.php?r=categories/create" class="btn btn-primary pull-right">Ajouter</a>
</div>
</div>
<hr>
<div class="row">
    <div class="col-md-6 col-md-offset-3">
    <?php if(Yii::$app->session->getFlash('success') != null):?>
         <div class="alert alert-success"><?= Yii::$app->session->getFlash('success'); ?></div>
    <?php endif;?>
        <ul class="list-group">
            <?php foreach($categories as $categorie):?>
            <li class="list-group-item"><a href="/yii2_job_website/web/index.php?r=jobs/category&id=<?php echo $categorie->id;?>" class="btn btn-link"><?php echo $categorie->name;?></a></li>
            <?php endforeach;?>
        </ul>
    </div>
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <?php echo LinkPager::widget(['pagination'=>$pagination]);?>
        </div>
    </div>
</div>
                            

4- الملف UsersController.php

كنمشي للمجلد controllers كنزيد ملف جديد كنسميه UsersController.php لي غادي تكون فيه fonction actionRegister لي كتمكن من تسجيل مستخدم جديد من بعد مكتستقبل المعلومات من الملف register.php ولي غادي نزيدوه فأولا كتحقق واش حتى شي حقل ما خاوي منبعد كتزيدهم فالجدول users وكاين أيضا ل fonction actionLogin لي كتوجه المستخدم للملف login.php ولي غادي نزيدوه حتى هو من بعد الكود ديال الملف هو :

                                    <?php
namespace app\controllers;
use app\models\User;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\base\Security;
class UsersController extends \yii\web\Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }

    public function actionLogin()
    {
        return $this->render('login');
    }

    public function actionRegister()
    {
        $user = new User();
        if ($user->load(Yii::$app->request->post())) {
            if ($user->validate()) {
               $user->password = sha1($user->password);
               $user->token =  \Yii::$app->security->generateRandomString();
               $user->save();
               \Yii::$app->getSession()->setFlash('success', 'Compte crée.');
               return $this->redirect('index.php');
            }
        }
        return $this->render('register', [
            'user' => $user,
        ]);
    }

}

                                

5- الملف User.php

من بعد فالمجلد models كنزيد ملف كنسميه User.php ولي عبارة عن model فيه fonction rules لي كتحدد الحقول لي خاصها تكون عامرة والحقول لي خصها تكون string ولا integer منبعد كاين findIdentity لي كترجع مستخدم بواسطة ل id ديالو ثم كاين findByUsername لي لي كترجع مستخدم بواسطة ل pseudo ثم كاين validatePassword لي كتقارن واش كلمة المرور لي دخل ملي تكونيكطا هي نفسها لي مسجلة فقاعدة البيانات من بعد كاين des fonctions لي كيرجعو ل id ول cookie ولي كايجيو مع ل framework الكود ديال الملف هو :

                                    <?php
namespace app\models;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
use yii\base\Model;
use yii\base\Security;
class User extends ActiveRecord implements IdentityInterface
{
    public static function tableName()
    {
        return 'users';
    }
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'name' => 'Name',
            'username' => 'Username',
            'email' => 'Email',
            'password' => 'Password',
            'created_at' => 'Created At',
        ];
    }
    public function rules()
    {
        return [
            [['name','email','password','username'], 'required'],
            [['email'], 'email'],
            [['email'], 'string', 'max' => 255],
        ];
    }

    /**
     * Finds an identity by the given ID.
     *
     * @param string|int $id the ID to be looked for
     * @return IdentityInterface|null the identity object that matches the given ID.
     */
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }
    public function findByUsername($username)
    {
        return User::findOne(['username'=>$username]);
    }
    public function validatePassword($password){
        return $this->password === sha1($password);
    }
    /**
     * Finds an identity by the given token.
     *
     * @param string $token the token to be looked for
     * @return IdentityInterface|null the identity object that matches the given token.
     */
    public static function findIdentityByAccessToken($token, $type = null)
    {
        return static::findOne(['access_token' => $token]);
    }
    /**
     * @return int|string current user ID
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string current user auth key
     */
    public function getAuthKey()
    {
        return $this->token;
    }

    /**
     * @param string $authKey
     * @return bool if auth key is valid for current user
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }
}
                                


بحث في الموقع


إشترك للتوصل بالجديد