คำถามง่าย ๆ แต่คำตอบนั้นค่อนข้างยาก ใน Codeigniter ฉันสามารถโหลด url helper แล้วก็ทำได้
echo base_url();
เพื่อรับ URL ของเว็บไซต์ของฉัน Laravel มีข้อเทียบเท่าหรือไม่?
คำถามง่าย ๆ แต่คำตอบนั้นค่อนข้างยาก ใน Codeigniter ฉันสามารถโหลด url helper แล้วก็ทำได้
echo base_url();
เพื่อรับ URL ของเว็บไซต์ของฉัน Laravel มีข้อเทียบเท่าหรือไม่?
คำตอบ:
คุณสามารถใช้ซุ้ม URL ซึ่งช่วยให้คุณสามารถเรียกไปยังเครื่องกำเนิด URL
ดังนั้นคุณสามารถทำได้:
URL::to('/');
คุณยังสามารถใช้คอนเทนเนอร์แอปพลิเคชัน:
$app->make('url')->to('/');
$app['url']->to('/');
App::make('url')->to('/');
หรือฉีด UrlGenerator:
<?php
namespace Vendor\Your\Class\Namespace;
use Illuminate\Routing\UrlGenerator;
class Classname
{
protected $url;
public function __construct(UrlGenerator $url)
{
$this->url = $url;
}
public function methodName()
{
$this->url->to('/');
}
}
{{URL::to('/my-page.html')}}
ดูและecho URL::to('/my-page.html');
ที่รหัส
<a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">
ขอบคุณ!
Laravel <5.2
echo url();
Laravel> = 5.2
echo url('/');
หวังว่านี่จะช่วยคุณได้
url('/')
แทนได้
asset('/')
ดูเหมือนว่าจะดีกว่าสำหรับฉันเพราะมันมีเครื่องหมายสแลชซึ่งจำเป็นสำหรับฐาน href
สำหรับ Laravel 5 ฉันปกติใช้:
<a href="{{ url('/path/uri') }}">Link Text</a>
ฉันของความเข้าใจว่าการใช้url()
ฟังก์ชั่นที่โทรเดียวกันFacade
เป็นURL::to()
secure_url()
ฟังก์ชั่นในลักษณะเดียวกันและสิ่งนี้จะสร้างลิงค์ https การใช้งานurl()
บนเว็บไซต์ https จะยังคงสร้างลิงค์ http
url()
การเชื่อมโยง http หรือ https ขึ้นอยู่กับโปรโตคอลของคำขอสร้าง ในทางตรงกันข้ามsecure_url()
ไม่มีอยู่จริง การเปลี่ยนแปลงนี้ใน Laravel 5.4 ด้วยหรือไม่
secure_url()
ให้ที่นี่: laravel.com/docs/5.4/helpers#method-secure-url
อัพเดตจากเอกสาร 2018 Laravel release (5.7) พร้อมฟังก์ชั่น url () และการใช้งาน
คำถาม: หากต้องการรับ URL ของเว็บไซต์ใน Laravel
นี่เป็นคำถามทั่วไปดังนั้นเราจึงแยกได้
1. การเข้าถึง URL ฐาน
// Get the base URL.
echo url('');
// Get the app URL from configuration which we set in .env file.
echo config('app.url');
2. การเข้าถึง URL ปัจจุบัน
// Get the current URL without the query string.
echo url()->current();
// Get the current URL including the query string.
echo url()->full();
// Get the full URL for the previous request.
echo url()->previous();
3. URL สำหรับเส้นทางที่กำหนดชื่อ
// http://example.com/home
echo route('home');
4. URL ไปยังสินทรัพย์ (สาธารณะ)
// Get the URL to the assets, mostly the base url itself.
echo asset('');
5. ไฟล์ URL
use Illuminate\Support\Facades\Storage;
$url = Storage::url('file.jpg'); // stored in /storage/app/public
echo url($url);
แต่ละวิธีเหล่านี้อาจเข้าถึงได้ผ่านทางส่วนหน้า URL:
use Illuminate\Support\Facades\URL;
echo URL::to(''); // Base URL
echo URL::current(); // Current URL
วิธีเรียกใช้ฟังก์ชันผู้ช่วยเหล่านี้จากเทมเพลตเบลด (มุมมอง) ที่มีการใช้งาน
// http://example.com/login
{{ url('/login') }}
// http://example.com/css/app.css
{{ asset('css/app.css') }}
// http://example.com/login
{{ route('login') }}
// usage
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<!-- Login link -->
<a class="nav-link" href="{{ route('login') }}">Login</a>
<!-- Login Post URL -->
<form method="POST" action="{{ url('/login') }}">
หากต้องการให้มันทำงานกับ URL ที่ไม่ได้สวยฉันต้องทำ:
asset('/');
<base href="{{ asset('/') }}" />
<base href="..."/>
เพราะมีการทับท้าย
Laravel มีฟังก์ชันผู้ช่วยมากมายและสำหรับความต้องการของคุณคุณสามารถทำได้ง่ายๆ
ใช้ฟังก์ชั่นurl ()ของ Laravel Helpers
แต่ในกรณีของLaravel 5.2คุณจะต้องใช้url ('/')
นี่คือรายการของฟังก์ชั่นตัวช่วยอื่น ๆ ของ Laravel
url('/css/style.css')
นี้:
echo url('/');
และนี่:
echo asset('/');
ทั้งแสดง URL บ้านในกรณีของฉัน :)
คุณยังสามารถใช้ URL :: ถึง ('/') เพื่อแสดงภาพใน Laravel โปรดดูที่ด้านล่าง:
<img src="{{URL::to('/')}}/images/{{ $post->image }}" height="100" weight="100">
สมมติว่าภาพของคุณถูกจัดเก็บภายใต้ "สาธารณะ / ภาพ"
ในการรับ URL ของแอปที่คุณกำหนดค่าคุณสามารถใช้:
Config::get('app.url')
app.url
มันดูเหมือนจะเป็นทางเลือก
ฉันใช้สิ่งนี้และทำงานให้ฉันใน Laravel 5.3.18:
<?php echo URL::to('resources/assets/css/yourcssfile.css') ?>
หมายเหตุสำคัญ: สิ่งนี้จะใช้ได้เฉพาะเมื่อคุณลบ "สาธารณะ" ออกจาก URL ของคุณแล้ว ในการทำเช่นนี้คุณสามารถดูบทแนะนำที่เป็นประโยชน์นี้
อย่างไรก็ตามถ้าเส้นทางของคุณมีชื่อเช่น:
Route::match(['get', 'post'], 'specialWay/edit', 'SpecialwayController@edit')->name('admin.spway.edit');
คุณสามารถใช้route()
ฟังก์ชั่นเช่นนี้:
<form method="post" action="{{route('admin.spway.edit')}}" class="form form-horizontal" id="form-spway-edit">
ฟังก์ชั่นที่มีประโยชน์อื่น ๆ :
$uri = $request->path();
$url = $request->url();
$url = $request->fullUrl();
asset()
app_path();
// ...
https://github.com/laravel/framework/blob/5.4/src/Illuminate/Foundation/helpers.php
ตรวจสอบสิ่งนี้ -
<a href="{{url('/abc/xyz')}}">Go</a>
นี่ใช้งานได้สำหรับฉันและฉันหวังว่าจะได้ผลสำหรับคุณ
คุณสามารถใช้ซุ้มหรือฟังก์ชั่นผู้ช่วยดังต่อไปนี้
echo URL::to('/');
echo url();
Laravel ใช้ส่วนประกอบ Symfony สำหรับการร้องขอตรรกะภายใน Laravel ดังต่อไปนี้
namespace Symfony\Component\HttpFoundation;
/**
* {@inheritdoc}
*/
protected function prepareBaseUrl()
{
$baseUrl = $this->server->get('SCRIPT_NAME');
if (false === strpos($this->server->get('REQUEST_URI'), $baseUrl)) {
// assume mod_rewrite
return rtrim(dirname($baseUrl), '/\\');
}
return $baseUrl;
}
ฉันพบวิธีอื่นในการรับ URL พื้นฐานเพื่อแสดงค่าของตัวแปรสภาพแวดล้อม APP_URL
env('APP_URL')
ซึ่งจะแสดง URL พื้นฐานเช่นhttp: // // domains_your yours_website ระวังว่าคุณได้ตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์. env (ที่มีอยู่ในโฟลเดอร์รูท)
คุณสามารถรับได้จากคำขอที่ laravel 5
request()->getSchemeAndHttpHost();
ฉันยังใช้ base_path () fuction และใช้งานได้
/something/
มันจะทำให้ URL ที่ถูกต้อง