كيفاش تصاوب blog ب nette framework الجزء الثالت

فهاد الجزء الثالت من كيفاش تصاوب blog ب nette framework غادي نكملو الملفات لي غادي يمكنو الأدمن من تسجيل الدخول ديالو وبالتالي تكون عندو الصلاحية ديال إضافة نعديل موضوع .

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


1- الملف show.latte


دائما فالمجلد post زيد ملف جديد سميه show.latte هادا الملف لي غادي يمكن من عرض الموضوع لي اختارو المستخدم بالإضافة للتعليقات ديالو وهادشي كيجي من ل fonction renderShow لي كاينة فالملف PostPresenter.php ثم كاينة الفورم لي كتمكن من إضافة تعليقات على الموضوع ولي كاينة ف fonction createComponentCommentForm الكود ديال الملف هو :

                                    
                                        {block content}
<div class="container">
<div class="pull-right">
<a n:href="Post:edit $post->id" class="btn btn-primary" n:if="$user->loggedIn">Modifier post</a>
</div>
</div>
<div id="content">
	<div class="row">
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-default">
                <div class="post">
                    <div class="label label-danger">{$post->created_at|date:'F j, Y'}</div>
                    <h2>{$post->title}</h2>
                    <div>{$post->body}</div>
                </div>
            </div>
        </div>
    </div>
    <hr>
    <h4 class="text-info text-center">Commentaire <span class="badge">{count($comments)}</span></h4>
    <div class="comments" align="center">
        {foreach $comments as $comment}
            <p><b>{$comment->name}</b>:</p>
            <div>{$comment->body}</div>
        {/foreach}
    </div>
    <hr>
    <div class="row" align="center">
        <div class="col-md-6 col-md-offset-3">
        {control commentForm}
        </div>
    </div>
</div>
                                    
                                

2- الملف SignPresenter.php


فالمجلد presenters لي هما لcontrollers عند لframeworks لخرين غادي نزيد ملف جديد نسميه SignPresenter.php هاد ل controller فيه لfonctions لي غادي يمكنو الأدمن يتكونيكطا فأولا كاين createComponentSignInForm لي كانزيدو بها الفورم لي كيمكن الأدمن يتكونيكطا ولي غادي تكون فالملف in لي غادي نزيدوه من بعد ثم كاين signInFormSucceeded ولي كتحقق واش الpseudo وكلمة المرور كاينين كانوا كتوجه المستخدم للصفحة الرئيسية مكنوش كتعرض رسالة خطأ ثم كاين actionOut كتمكن الأدمن باش يديكونيكطا الملف هو :

                                    
                                        <?php

namespace App\Presenters;
use Nette\Application\UI\Form;
use Nette;


class SignPresenter extends Nette\Application\UI\Presenter
{
    protected function createComponentSignInForm()
    {
        $form = new Form;
        $form->addText('username', 'Pseudo:')
            ->setRequired('Veuillez entrer votre pseudo');
        $form->addPassword('password', 'Passe:')
            ->setRequired('Veuillez entrer votre passe');

        $form->addSubmit('send', 'Connexion');
        $form->onSuccess[] = [$this, 'signInFormSucceeded'];
        return $form;
    }
    public function signInFormSucceeded($form, $values)
    {
        try {
            $this->getUser()->login($values->username, $values->password);
            $this->redirect('Homepage:default');
        } catch (Nette\Security\AuthenticationException $e) {
            $form->addError('Pseudo ou mot de passe est incorrect');
        }
    }
    public function actionOut()
    {
        $this->getUser()->logout();
        $this->flashMessage('Déconnecté');
        $this->redirect('Homepage:default');
    }
}

                                    
                                

3- الملف in.latte


فالمجلد templates زيد مجلد جديد سميه sign فيه زيد ملف جديد سميه in.latte فيه غادي تكون الفورم لي غادي تمكن الادمن باش يدخل المعلومات ديالو باش يتكونيكطا ولي سبق زدناها ف createComponentSignInForm فالملف SignPresenter الكود ديال الملف هو :

                                      
                                        {block content}
<div id="content">
	<div class="row">
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-default">
                <h1 n:block="title" class="text-center text-primary">Connexion</h1>
                <div class="post">
                  <div class="row">
                     <div class="col-md-6 col-md-offset-3">
                        {control signInForm} 
                     </div>
                  </div>
                </div>
            </div>
        </div>
    </div>
</div>
                                      
                                    

4- الملف config.neon


فالمجلد config والملف config.neon كنضيف الpseudo ولmot de passe لي غادي يمكنوا الادمن باش يدخل ففnette framework عكس لphp frameworks لخرين يمكنلك تزيد مستخدم غير فهاد الملف بلا ماتحتاج تزيد جدول فقاعدة البيانات ديال لمستخدمين ومنبعد تكونيكطا بالطريقة العادية وللمزيد من المعلومات على nette framework يمكنلك تشوف la documentation ديالهم من هنا https://doc.nette.org/en/2.4 فالكود لي غادي تزيد للملف هو :

                                        
                                            parameters:


application:
	errorPresenter: Error
	mapping:
		*: App\*Module\Presenters\*Presenter


session:
	expiration: 14 days


services:
	router: App\RouterFactory::createRouter
security:
    users:
        admin: 123456
    

                                        
                                    

كلمات مفاتيح :