لارافيل-التخطيط العام غير مطلوب في كل وظيفة

StackOverflow https://stackoverflow.com//questions/12660201

  •  11-12-2019
  •  | 
  •  

سؤال

لقد بدأت مؤخرا العمل مع لارافيل.إطار كبير حتى الآن!ولكن لدي سؤال.

أنا باستخدام قالب تخطيط مثل هذا:public $layout = 'layouts.private';

تم تعيين هذا في وحدة التحكم الأساسية الخاصة بي:

public function __construct(){

    //Styles
    Asset::add('reset', 'css/reset.css');
    Asset::add('main', 'css/main.css');

    //Scripts
    Asset::add('jQuery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');

    //Switch layout template according to the users auth credentials.
    if (Auth::check()) {
        $this -> layout = 'layouts.private';
    } else {
        $this -> layout = 'layouts.public';
    }

    parent::__construct();

}

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

class Login_Controller extends Base_Controller {

public $restful = true;

public function post_index()
{

    $user = new User();
    $credentials = array('username' => Input::get('email'), 'password' => Input::get('password'));

    if (Auth::attempt($credentials))
    {

    } else {

    }

}

}

الخطأ الذي أحصل عليه ، هو أنني لا أقوم بتعيين محتوى المتغيرات المختلفة في تخطيط public العام.ولكن نظرا لعدم الحاجة إلى عرض في هذه الوظيفة, كيف أخبر لارافيل بعدم تضمين التخطيط في هذه الوظيفة?

أفضل حل أنني نفسي قد حان الصليب (لا أعرف إذا كان هذا هو وسيلة سيئة?) هو unset($this -> layout); من وظيفة post_index()...

لتلخيص سؤالي:كيف أقول لارافيل لا تشمل public $layout في وظائف معينة, حيث ليست هناك حاجة وجهة نظر?

شكرا مقدما, فيشر

هل كانت مفيدة؟

المحلول

تحتاج إلى تعيين $this->layout = null على أي وظيفة لا تريد عرض العرض.

نصائح أخرى

إذا لم تكن هناك حاجة إلى عرض ، فيجب أن يكون إعادة توجيه.ماذا يجري في طريقة تسجيل الدخول الخاصة بك?

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

هذا هو نمط تطوير الويب يسمى آخر / إعادة توجيه / الحصول على وينبغي أن تطبق في معظم الحالات.لا أستطيع التفكير في حالة حيث يمكنك تطبيقه.

في هذه الطريقة الخاصة بك ، لا حاجة إلى عرض ، ولكن لا يزال يتعين عليك إعادة التوجيه على هذا النحو.

return Redirect::to('wherever');

تذكر أنه يجب عليك العودة إعادة توجيه أو لارافيل سوف تفترض أنك تريد استخدام التخطيط الخاص بك كرد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top