दृश्य
webman डिफ़ॉल्ट रूप से php मूल संवाद का उपयोग करता है जैसा कि टेम्पलेट के रूप में, 'opcache' को खोलने के बाद इसमें सर्वोत्तम प्रदर्शन होता है। php मूल टेम्पलेट के अलावा, webman ने Twig 、Blade 、think-template template engine भी प्रदान किया है।
opcache को खोलना
दृश्य का उपयोग करते समय, php.ini में opcache.enable
और opcache.enable_cli
दोनों विकल्पों को खोलने की सलाह दी जाती है, ताकि टेम्पलेट इंजन को सर्वोत्तम प्रदर्शन प्राप्त हो सके।
Twig इंस्टॉल करें
-
कॉम्पोजर द्वारा स्थापित करें
composer require twig/twig
-
कॉन्फ़िगरेशन फ़ाइल
config/view.php
को निम्नलिखित रूप में संशोधित करें<?php use support\view\Twig; return [ 'handler' => Twig::class ];
सुझाव
अन्य कॉन्फ़िगरेशन विकल्प options के माध्यम से प्रविष्ट किए जा सकते हैं, जैसेreturn [ 'handler' => Twig::class, 'options' => [ 'debug' => false, 'charset' => 'utf-8' ] ];
Blade इंस्टॉल करें
-
कॉम्पोजर द्वारा स्थापित करें
composer require psr/container ^1.1.1 webman/blade
-
कॉन्फ़िगरेशन फ़ाइल
config/view.php
को निम्नलिखित रूप में संशोधित करें<?php use support\view\Blade; return [ 'handler' => Blade::class ];
think-template इंस्टॉल करें
-
कॉम्पोजर द्वारा स्थापित करें
composer require topthink/think-template
-
कॉन्फ़िगरेशन फ़ाइल
config/view.php
को निम्नलिखित रूप में संशोधित करें<?php use support\view\ThinkPHP; return [ 'handler' => ThinkPHP::class, ];
सुझाव
अन्य कॉन्फ़िगरेशन विकल्प options के माध्यम से प्रविष्ट किए जा सकते हैं, जैसेreturn [ 'handler' => ThinkPHP::class, 'options' => [ 'view_suffix' => 'html', 'tpl_begin' => '{', 'tpl_end' => '}' ] ];
मूल PHP टेम्पलेट इंजन उदाहरण
फ़ाइल app/controller/UserController.php
निम्नलिखित प्रकार होगा
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function hello(Request $request)
{
return view('user/hello', ['name' => 'webman']);
}
}
निम्नलिखित प्रकार की नई फ़ाइल app/view/user/hello.html
बनाएं
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
hello <?=htmlspecialchars($name)?>
</body>
</html>
Twig टेम्पलेट इंजन उदाहरण
कॉन्फ़िगरेशन फ़ाइल config/view.php
को निम्नलिखित रूप में संशोधित करें
<?php
use support\view\Twig;
return [
'handler' => Twig::class
];
app/controller/UserController.php
निम्नलिखित प्रकार होगा
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function hello(Request $request)
{
return view('user/hello', ['name' => 'webman']);
}
}
फ़ाइल app/view/user/hello.html
निम्नलिखित प्रकार की होगी
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
hello {{name}}
</body>
</html>
अधिक दस्तावेज़ Twig देखें
Blade टेम्पलेट उदाहरण
कॉन्फ़िगरेशन फ़ाइल config/view.php
को निम्नलिखित रूप में संशोधित करें
<?php
use support\view\Blade;
return [
'handler' => Blade::class
];
app/controller/UserController.php
निम्नलिखित प्रकार होगा
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function hello(Request $request)
{
return view('user/hello', ['name' => 'webman']);
}
}
फ़ाइल app/view/user/hello.blade.php
निम्नलिखित प्रकार की होगी
ध्यान दें कि ब्लेड टेम्पलेट की एक्सटेंशन
.blade.php
होती है।
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
hello {{$name}}
</body>
</html>
अधिक दस्तावेज़ Blade देखें
ThinkPHP टेम्पलेट उदाहरण
कॉन्फ़िगरेशन फ़ाइल config/view.php
को निम्नलिखित रूप में संशोधित करें
<?php
use support\view\ThinkPHP;
return [
'handler' => ThinkPHP::class
];
app/controller/UserController.php
निम्नलिखित प्रकार होगा
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function hello(Request $request)
{
return view('user/hello', ['name' => 'webman']);
}
}
फ़ाइल app/view/user/hello.html
निम्नलिखित प्रकार की होगी
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
hello {$name}
</body>
</html>
अधिक दस्तावेज़ think-template देखें
टेम्प्लेट मूल्यांकन
view(टेम्प्लेट, परिवर्तन_सरणी)
का उपयोग करने के अलावा, हम किसी भी स्थान पर View::assign()
को कॉल करके टेम्प्लेट को मूल्यांकन दे सकते हैं। उदाहरण के लिए:
<?php
namespace app\controller;
use support\Request;
use support\View;
class UserController
{
public function hello(Request $request)
{
View::assign([
'name1' => 'value1',
'name2'=> 'value2',
]);
View::assign('name3', 'value3');
return view('user/test', ['name' => 'webman']);
}
}
View::assign()
कुछ स्थितियों में काफी उपयोगी होता है, उदाहरण के लिए किसी सिस्टम के हर पेज के शीर्ष में लॉगिन करने वाले व्यक्ति की जानकारी दिखाना होता है, अगर हर पेज को इस जानकारी को view('टेम्प्लेट', ['user_info' => 'उपयोगकर्ता जानकारी']);
के माध्यम से मूल्यांकित किया जाता है तो यह काफी जटिल हो जाएगा। समाधान है कि मध्यवर्ती में उपयोगकर्ता की जानकारी प्राप्त करें, और फिर View::assign()
के माध्यम से उपयोगकर्ता की जानकारी को टेम्प्लेट को मूल्यांकित करें।
दृश्य फ़ाइल पथ के बारे में
नियंत्रक
जब नियंत्रक view('टेम्प्लेटनाम',[]);
को कॉल करता है, दृश्य फ़ाइल निम्नलिखित नियमों के अनुसार खोजी जाती है:
- यदि बहु-एप्लिकेशन नहीं है, तो
app/view/
के अनुसार संबंधित दृश्य फ़ाइल का उपयोग करें - बहु-एप्लिकेशन के समय,
app/एप्लिकेशननाम/view/
के अनुसार संबंधित दृश्य फ़ाइल का उपयोग करें
संक्षेप में कहा जाए कि यदि $request->app
खाली है, तो app/view/
में दृश्य फ़ाइल का उपयोग करें, अन्यथा app/{$request->app}/view/
में दृश्य फ़ाइल का उपयोग करें।
क्लोजर फ़ंक्शन
क्लोजर फ़ंक्शन में $request->app
खाली होता है, किसी भी ऐप से संबंधित नहीं होता है, इसलिए क्लोजर फ़ंक्शन app/view/
में दृश्य फ़ाइल का उपयोग करता है, उदाहरण के लिए config/route.php
में रूट की परिभाषा
Route::any('/admin/user/get', function (Reqeust $reqeust) {
return view('user', []);
});
यह app/view/user.html
के रूप में दृश्य फ़ाइल का उपयोग करेगा (जब ब्लेड दृश्य का उपयोग किया जाता है तो दृश्य फ़ाइल app/view/user.blade.php
होगी)।
ऐप को निर्दिष्ट करें
बहु-एप्लिकेशन मोड में टेम्पलेट को पुनः उपयोग करने के लिए view($template, $data, $app = null) तीसरे पैरामीटर $app
द्वारा ऐप निर्दिष्ट करने का विकल्प प्रदान करता है। उदाहरण के लिए view('user', [], 'admin');
app/admin/view/
में संबंधित दृश्य फ़ाइल का उपयोग करेगा।
ट्विग को विस्तारित करें
ध्यान दें
यह सुविधा webman-framework>=1.4.8 की आवश्यकता है।
हम view.extension
कॉन्फ़िगरेशन को ट्विग दृश्य इंस्टेंस को विस्तारित करने के लिए प्रदान करके यहाँ दिये गए config/view.php
की तरह ट्विग को विस्तारित कर सकते हैं
<?php
use support\view\Twig;
return [
'handler' => Twig::class,
'extension' => function (Twig\Environment $twig) {
$twig->addExtension(new your\namespace\YourExtension()); // विस्तार करने के लिए एक्सटेंशन जोड़ें
$twig->addFilter(new Twig\TwigFilter('rot13', 'str_rot13')); // फ़िल्टर जोड़ें
$twig->addFunction(new Twig\TwigFunction('फ़ंक्शन_नाम', function () {})); // फ़ंक्शन जोड़ें
}
];
ब्लेड को विस्तारित करें
ध्यान दें
यह सुविधा webman-framework>=1.4.8 की आवश्यकता है
वैसे ही हम view.extension
कॉन्फ़िगरेशन को ब्लेड दृश्य इंस्टेंस को विस्तारित करने के लिए प्रदान करके यहाँ दिये गए config/view.php
की तरह ब्लेड को विस्तारित कर सकते हैं
<?php
use support\view\Blade;
return [
'handler' => Blade::class,
'extension' => function (Jenssegers\Blade\Blade $blade) {
// ब्लेड को नेता जोड़ें
$blade->directive('mydate', function ($timestamp) {
return "<?php echo date('Y-m-d H:i:s', $timestamp); ?>";
});
}
];
ब्लेड कंपोनेंट का उपयोग करना
ध्यान दें
webman/blade>=1.5.2 की आवश्यकता है
मान लिया जाए कि एक Alert कंपोनेंट जोड़ना चाहिए
app/view/components/Alert.php
नया बनाएँ
<?php
namespace app\view\components;
use Illuminate\View\Component;
class Alert extends Component
{
public function __construct()
{
}
public function render()
{
return view('components/alert')->rawBody();
}
}
app/view/components/alert.blade.php
नया बनाएँ
<div>
<b style="color: red">हेलो ब्लेड कम्पोनेंट</b>
</div>
/config/view.php
के बराबर कुछ इस तरह का कोड
<?php
use support\view\Blade;
return [
'handler' => Blade::class,
'extension' => function (Jenssegers\Blade\Blade $blade) {
$blade->component('alert', app\view\components\Alert::class);
}
];
इसके बाद, ब्लेड कंपोनेंट Alert को सेट कर दिया गया है, जब टेम्प्लेट में उपयोग करते हैं तो चित्रित रूप में निम्नलिखित दिखाई देगा
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
<x-alert/>
</body>
</html>