laravel5 todo إنشاء تطبيق قائمة مهام بسيط باستخدام Laravel 5 - الجزء الرابع


هشام رزق الله

حتى الآن تعلمنا كيفية تثبيت وإعداد Laravel، بالإضافة إلى إعداد بعض المشاريع والمهام والموارد المضمّنة و عرضهم على المستخدم، كما أنشأنا وظائف الإنشاء والتعديل والحذف، وفي هذا الفصل سوف نختم الدرس عن طريق إضافة استمارة التحقق.

laravel5-todo-app.thumb.png.57f28dff002b

استمارة التحقق من جانب الخادم

على الرغم من أن استمارات الإنشاء والتعديل تعمل إلا أننا لم نقم بالتحقق من ما يتم إدخاله، وهذا ما سنقوم بعمله اليوم.
هنالك طرق متعددة للتعامل مع استمارة التحقق، بعضها أفضل من الآخر، ولهذا التطبيق الصغير نقترح أن نستخدم وظيفة المتحكِّمات ()validate مع كائن Illuminate\Http\Request مثل هذا، في ملف app/Http/Controllers/ProjectsController.php/:

// /app/Http/Controllers/ProjectsController.php
     
use Illuminate\Http\Request;
     
class ProjectsController extends Controller {
     
    protected $rules = [		'name' => ['required', 'min:3'],		'slug' => ['required'],	]; 
    /**
    * Store a newly created resource in storage.
    *
    * @param \Illuminate\Http\Request $request	 * @return Response
    */


    public function store(Request $request)
    {
    	$this->validate($request, $this->rules); 
    	$input = Input::all();
    	Project::create( $input );
     
    	return Redirect::route('projects.index')->with('message', 'Project created');
    }
     
    /**
    * Update the specified resource in storage.
    *
    * @param  \App\Project $project
    * @param \Illuminate\Http\Request $request	 * @return Response
    */
    public function update(Project $project, Request $request)
    {
    	$this->validate($request, $this->rules); 
    	$input = array_except(Input::all(), '_method');
    	$project->update($input);
     
    	return Redirect::route('projects.show', $project->slug)->with('message', 'Project updated.');
    }

وأما في ملف app/Http/Controllers/TasksController.php/:

// /app/Http/Controllers/TasksController.php
use Illuminate\Http\Request;
     
class TasksController extends Controller {
     
    protected $rules = ['name'        => ['required', 'min:3'],
                        'slug'        => ['required'],	
                        'description' => ['required'],
                       ]; 

   	/**
    * Store a newly created resource in storage.
    *
    * @param  \App\Project $project
    * @param \Illuminate\Http\Request $request	 * @return Response
    */
    public function store(Project $project, Request $request)
    {
    	$this->validate($request, $this->rules); 
    	$input = Input::all();
    	$input['project_id'] = $project->id;
    	Task::create( $input );
     
    	return Redirect::route('projects.show', $project->slug)->with('Task created.');
    }
     
    /**
    * Update the specified resource in storage.
    *
    * @param  \App\Project $project
    * @param  \App\Task    $task
    * @param \Illuminate\Http\Request $request	 * @return Response
    */
    public function update(Project $project, Task $task, Request $request)
    {
    	$this->validate($request, $this->rules); 
    	$input = array_except(Input::all(), '_method');
    	$task->update($input);
     
    	return Redirect::route('projects.tasks.show', 
                               [$project->slug, $task->slug])->with('message', 'Task updated.');
    }

سوف نحتاج أيضا إلى مكان لعرض أية أخطاء، لذلك قُم بفتح  resources/views/app.blade.php/ وأضف السطور التالية أسفل ('yield('content@:

<div class="content">
    @if (Session::has('message'))
    	<div class="flash alert-info">
    		<p>{{ Session::get('message') }}</p>
    	</div>
    @endif

    @if ($errors->any())		
        <div class='flash alert-danger'>
     		@foreach ( $errors->all() as $error )				
                <p>{{ $error }}</p>			
            @endforeach		
        </div>	
    @endif 

   @yield('content')
</div>

إذا أردت قائمة كاملة من قواعد التحقق، أنصحك بزيارة التوثيق الرسمي.
من المفترض أن يعمل كل شيء الآن، وإذا كان عكس ذلك، فسوف تقوم ()this->validate$ بتوجيهك إلى الصفحة الحالية مع الأخطاء التي سوف تظهر على الصفحة.

خاتمة

لقد قمنا في هذه الدورة بتعلم الكثير من الأشياء حول Laravel، مثل كيفية تثبيت وإعداد Laravel 5 بالإضافة إلى بعض المفاهيم المتقدمة مثل الربط بين الطريق والنموذج route model binding والحماية من CSRF، وعلى الرغم من بساطة التطبيق الذي قمنا به إلا أنه بداية جيدة لكل من يريد احتراف Laravel.

ترجمة -وبتصرّف- للمقال Creating a Basic ToDo Application in Laravel 5 – Part 4.

حقوق الصورة البارزة: Designed by Freepik.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن