আমি কীভাবে লারাভেল 'ব্লেড টেম্প্লেটিং ব্যবহার করে বিন্যাসে একটি পরিবর্তনশীল পাস করব?


91

লারাভেল 4 এ, আমার নিয়ামক একটি ফলক বিন্যাস ব্যবহার করেন:

class PagesController extends BaseController {
    protected $layout = 'layouts.master';
}

মাস্টার বিন্যাসে ভেরিয়েবলের শিরোনাম আউটপুট রয়েছে এবং তারপরে একটি দৃশ্য প্রদর্শিত হবে:

...
<title>{{ $title }}</title>
...
@yield('content')
....

যাইহোক, আমার নিয়ামকটিতে আমি কেবল লে-আউটকে নয়, সাবউভিউতে ভেরিয়েবলগুলি পাস করতে সক্ষম হতে দেখি। উদাহরণস্বরূপ, একটি ক্রিয়া হতে পারে:

public function index()
{
    $this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}

এটি কেবলমাত্র $titleভেরিয়েবলটি দেখার বিষয়বস্তু বিভাগে পাস করবে । কীভাবে আমি সম্পূর্ণরূপে সেই পরিবর্তনশীলটি সরবরাহ করতে পারি বা খুব কমপক্ষে মাস্টার বিন্যাসে?

উত্তর:


217

আপনি যদি @extendsআপনার সামগ্রী বিন্যাসে ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন:

@extends('master', ['title' => $title])

4
এটি খুঁজে পেতে আমাকে প্রচুর গুগল লাগলো! এটি কেবল এই বাক্য গঠন যা আপনাকে নিখুঁতভাবে পেতে পারে এবং ডকস এই সমস্ত সূক্ষ্মতা প্রদর্শন করে না। আমি বলতে চাইছি এটি সরকারী দস্তাবেজগুলি কি বলে @component('alert', ['foo' => 'bar'])......
আর্থার তারাসভ

আমি এটি করছি এবং আমি লেআউট পৃষ্ঠায় একটি অপরিবর্তিত ত্রুটি পাচ্ছি। কোন ধারনা?
লুসি টার্টল

45

ভবিষ্যতে গুগল যারা লারাভেল 5 ব্যবহার করে তাদের জন্য আপনি এখন এটি সহ আরও ব্যবহার করতে পারেন,

@include('views.otherView', ['variable' => 1])

এইটি শেষ পর্যন্ত ল্যারাভেলের উপর একটি উপাদান ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে চাইছি, ধন্যবাদ!
রন মাইকেল

যদি আমি কেবল ["একটি"] পাস করি তবে আমি কীভাবে এটি টেমপ্লেটে পাব?
জাভিয়ের জে সলিস ফ্লোরস

20

আমি এটিকে আমার নিয়ামক পদ্ধতিতে যুক্ত করে সমস্যাটি সমাধান করতে সক্ষম হয়েছি:

    $title = 'My Title Here';
    View::share('title', $title);

$ এটি-> বিন্যাস-> শিরোনাম = 'হোম পৃষ্ঠা'; কোন কাজ হয়নি।


এটি আমার জন্য লারাভেল 5.1 এ কাজ করেছিল। সমস্যা সমাধানের সহজ উপায়।
কোডচাক

16

ফলক টেমপ্লেটে: এর মত একটি ভেরিয়েবল সংজ্ঞায়িত করুন

@extends('app',['title' => 'Your Title Goes Here'])
@section('content')

এবং app.blade.php বা আপনার পছন্দের অন্য কোনও ক্ষেত্রে (আমি কেবল ডিফল্ট লারাভেল 5 সেটআপ অনুসরণ করছি)

<title>{{ $title or 'Default title Information if not set explicitly' }}</title>

এটি এখানে আমার প্রথম উত্তর। আশা করি এটি কার্যকর। শুভকামনা!


এটি আমাকে কয়েক ঘন্টা বাঁচাতে সহায়তা করেছে ..! এটি লারাভেল ৫.৪ এ ব্যবহার করেছে এবং এটি দুর্দান্ত কাজ করে ... উত্তরের জন্য ধন্যবাদ ...
সায়ান প্রিন্স

4
আমার করণীয় ছিল:{{ $title ?? 'Default Title' }}
ড্যামিয়েন Ó সেলিলাঘ

5

সমাধানের সহজ উপায়:

view()->share('title', 'My Title Here');

অথবা মুখের মুখের ব্যবহার ব্যবহার করুন:

use View;

...

View::share('title', 'My Title Here');

আমি কি কোনও রুটের মিডলওয়্যারটিতে এটি চালাতে পারি?
মুকাদে

4

এটি প্রদর্শিত হয় যেন আমি লেআউট অবজেক্টের বৈশিষ্ট্যগুলি ব্যবহার করে পুরো লেআউটে ভেরিয়েবলগুলি পাস করতে পারি, উদাহরণস্বরূপ আমার সমস্যা সমাধানের জন্য আমি নিম্নলিখিতগুলি করতে সক্ষম হয়েছি:

$this->layout->title = 'Home page';

8
এটি আমার পক্ষে কাজ করে না। এটি বর্তমানে ভেরিয়েবল হিসাবে উপস্থিত নেই বলে উল্লেখ করে আমি একটি ত্রুটি পেয়েছি।
অ্যাডাম লিবোনাটি-রোচে

আমি কোথায় লেআউট অবজেক্টটি পাই?
ইয়েভেগেনি আফানসিয়েভ

1
class PagesController extends BaseController {
    protected $layout = 'layouts.master';

    public function index()
    {
        $this->layout->title = "Home page";
        $this->layout->content = View::make('pages/index');
    }
}

ব্লেড টেমপ্লেট ফাইলে, ভেরিয়েবলের সামনে @ ব্যবহার করতে স্মরণীয় করুন।

...
<title>{{ $title or '' }}</title>
...
@yield('content')
...

@ ইয়েজেগেনিআফানসিয়েভ, এই প্রশ্নটি আপনার পোস্টের মালিককে জিজ্ঞাসা করা উচিত। আমি শুধু তার কোডিং ফিরে উল্লেখ। কী ধরণের অদ্ভুত আপনি আমাকে জিজ্ঞাসা করছেন .... এবং এটির উত্তর 2014 সালে দেওয়া হয়েছিল Of অবশ্যই আমি যে সংস্করণটিটি জিজ্ঞাসা করছিলাম সেটির কথা উল্লেখ করছিলাম লারাভেল ৪
শিরো

0

আপনি চেষ্টা করতে পারেন:

public function index()
{
    return View::make('pages/index', array('title' => 'Home page'));
}

0

কেবল এই সহজ পদ্ধতিটি ব্যবহার করে দেখুন: নিয়ামক: -

 public function index()
   {
        $data = array(
            'title' => 'Home',
            'otherData' => 'Data Here'
        );
        return view('front.landing')->with($data);
   }

এবং আপনার লেআউটে (app.blade.php):

<title>{{ $title }} - {{ config('app.name') }} </title>

এখানেই শেষ.


আপনি কীভাবে ব্যাখ্যা করতে পারেন যে এটি কীভাবে সমস্যার সমাধান করে? এবং এটি পূর্বের (বিশেষত স্বীকৃত) উত্তরের উপরে এবং এর চেয়ে নতুন কী অবদান রাখে?
gst

তাই আপনাকে স্বাগতম! আপনি যখন উত্তরটি রাখেন, ঠিক আছে তা সত্ত্বেও, আপনার এটির কিছুটা ব্যাখ্যা করা উচিত, এবং আপনার ক্ষেত্রে যেমন একটির মতো রয়েছে, আপনার উত্তরটির উপকারিতা এবং কৌশলগুলি ব্যাখ্যা করার চেষ্টা করুন।
ডেভিড গার্সিয়া বোদেগো

0

আপনি যদি বিভাগগুলির পরিবর্তনশীলগুলি পেতে চান তবে আপনি এই জাতীয় অর্থ প্রদান করতে পারেন:

$_view      = new \View;
$_sections  = $_view->getFacadeRoot()->getSections();
dd($_sections);
/*
Out:
array:1 [▼
  "title" => "Painel"
]
*/

-2
$data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);

আমি এখনও পর্যন্ত এটি করেছি কারণ আমার ভিউ এবং মাস্টার ফাইল উভয়েই প্রয়োজন। মনে হয় আপনি যদি এই->- লেআউট-> শিরোনামটি ব্যবহার না করেন তবে এটি মাস্টার বিন্যাসে উপলব্ধ হবে না। উন্নতি স্বাগত!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.