اذهب إلى المحتوى

حتى الآن تعلمنا كيفية تثبيت وإعداد 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.


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

أفضل التعليقات

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



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...