سلام من چطور می تونم چنین چیزی توی blade ایجاد کنم
@logo(iran)
من از مثال زیر استفاده می کنم
اما جواب نمیده
لطفا راهنمایی بفرمایید
https://engageinteractive.co.uk/blog/custom-blade-directives-in-laravel-5
یعنی هم یه خروجی html به همراه متن نمایش بده در اینجا logo اسم یک فراخوان من در داخل composerهست
و متن iran هم یک متنی هست که باید داخل view مربوطه نمایش داده بشه
Blade::directive('input', function($expression)
{
$view = ‘cms.content.forms.logo’; // Path to your view
if (!$expression)
{
$expression = '([])';
}
return "<?php echo \$__env->make('{$view}', array_except(get_defined_vars(), ['__data', '__path']))->with{$expression}->render(); ?>";
});
در لینک زیر کامل در خود مستندات لاراول مثال اورده
https://laravel.com/docs/5.7/blade#extending-blade
@hesammousavi
مهندس جان اینو مطالع کردم
ولی به درد این کار من نمیخوره
من میخوام یه وردوی رشته بدم
و با استفاده از اون تابع فراخون خروجی یک صفحه html به همراه متنی باشد که قرار در بتن همون html نمایش داده شود
در واقع این روش شبیه به استفاده از include@ هست
و کدی که شما استفاده کردید, مال مواقعیه که بخواهید آرگمانهای اضافه هم به ویو پاس بدید.
اما دایرکتیو logo که میخواهید بسازید, آرگمان های اضافه نداره پس خیلی ساده از روش زیر استفاده کنید:
Blade::directive('logo', function($country)
{
return "<?php echo view({$country}); ?>";
});
و باید داخل resources/views هم فایل iran.blade.php رو داشته باشید و داخل ویو اصلی هم:
@logo('iran')
و حتما کش ویو رو هم پاک کنید تا تغییرات اعمال بشه:
php artisan view:clear
من فک کنم سوال بنده رو متوجه نشدید
من یه فایل html دارم به صورت زیر
<div class="row">
<div class="col-lg-12" style="font-family: 'IRANSansWeb';">
<h1 class="page-header">username</h1>
</div>
</div>
اینم viewcomposer من
Blade::directive('input', function($expression)
{
$view = ‘cms.content.forms’;
if (!$expression)
{
$expression = '([])';
}
return "<?php echo \$__env->make('{$view}', array_except(get_defined_vars(), ['__data', '__path']))->with{$expression}->render(); ?>";
});
من میخوام مثلن زدم دستور زیر رو هرجای blade خودم
@input(name)
بره اون فایل html ای که بالا نوشتم رو بیاره و بجای username اون nameس که نوشتم رو بیار
فایل HTML رو یه جا (partial1.blade.php) ذخیره کن:
<div class="row">
<div class="col-lg-12" style="font-family: 'IRANSansWeb';">
<h1 class="page-header">{{ $username }}</h1>
</div>
</div>
و از include@ استفاده کن:
@include('partial1', [
'username' => auth()->user()->name
])
این معادل همون کاره فقط کاستوم دایرکتیو نیست.
@ali.bayat
خوب منم دقیقا برعکس چنین چیزی که نوشتید رو میخوام
یعنی کاستوم باشد دایرکتیو من
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟