Laravel: รับ URL พื้นฐาน


183

คำถามง่าย ๆ แต่คำตอบนั้นค่อนข้างยาก ใน Codeigniter ฉันสามารถโหลด url helper แล้วก็ทำได้

echo base_url();

เพื่อรับ URL ของเว็บไซต์ของฉัน Laravel มีข้อเทียบเท่าหรือไม่?

คำตอบ:


282

คุณสามารถใช้ซุ้ม 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('/');
    }
}

3
และแม้ว่าจะมีลักษณะที่เป็นไปได้จากตัวอย่างนี้จะสัมพันธ์กับเส้นทางรากของ Laravel ดังนั้นหากคุณติดตั้งใน/something/มันจะทำให้ URL ที่ถูกต้อง
ceejayoz

@deFreitas และ #ceejayoz วิธีใช้ URL :: เพื่อด้วยการแปล laravel?
Mubashar Iqbal

1
@MubasharIqbal หากฉันเข้าใจคำถามของคุณ{{URL::to('/my-page.html')}}ดูและecho URL::to('/my-page.html');ที่รหัส
deFreitas

ตัวจัดการที่ดีในกรณีของฉัน: <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">ขอบคุณ!
joelmez4

157

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

หวังว่านี่จะช่วยคุณได้


4
คุณสามารถขยายคำตอบนี้เพื่อรวมคำอธิบายแทนที่จะเป็นเพียงส่วนย่อยของโค้ดได้หรือไม่

2
การสอบ: ฉันมีเว็บไซต์เป็น local: localhost / abcใน Codeigniter: echo base_url (); => ฉันได้รับlocalhost / abc In Laravel: echo url (); => ฉันได้รับlocalhost / abcด้วย
NguyễnThànhBồi

1
ใช้สิ่งนี้สำหรับ url ที่มีการแบ่งกลุ่ม: url (). '/'. \ Request :: segment (1). '/'. \ Request :: Segment (2)
0x1ad2

20
โปรดทราบว่าสิ่งนี้ไม่สามารถใช้งานได้ใน 5.2: github.com/laravel/framework/issues/11479คุณสามารถใช้url('/')แทนได้
4lun

1
asset('/')ดูเหมือนว่าจะดีกว่าสำหรับฉันเพราะมันมีเครื่องหมายสแลชซึ่งจำเป็นสำหรับฐาน href
vintproykt

47

สำหรับ Laravel 5 ฉันปกติใช้:

<a href="{{ url('/path/uri') }}">Link Text</a>

ฉันของความเข้าใจว่าการใช้url()ฟังก์ชั่นที่โทรเดียวกันFacadeเป็นURL::to()


4
หมายเหตุ: หากเว็บไซต์ของคุณให้บริการผ่าน https คุณสามารถใช้secure_url()ฟังก์ชั่นในลักษณะเดียวกันและสิ่งนี้จะสร้างลิงค์ https การใช้งานurl()บนเว็บไซต์ https จะยังคงสร้างลิงค์ http
DrewT

1
อันนี้ใช้ได้สำหรับฉัน ยังมีประโยชน์ในการทราบไวยากรณ์ secure_url () เช่นกัน ขอบคุณ
jimmyplaysdrums

1
ฉันใช้ Lumen 5.4 มีurl()การเชื่อมโยง http หรือ https ขึ้นอยู่กับโปรโตคอลของคำขอสร้าง ในทางตรงกันข้ามsecure_url()ไม่มีอยู่จริง การเปลี่ยนแปลงนี้ใน Laravel 5.4 ด้วยหรือไม่
Andreas Linnert

ไม่มันเป็นส่วนหนึ่งของ Larvel 5.4 ฉันไม่สามารถแสดงความคิดเห็นได้เพราะฉันไม่เคยใช้ Lumen แต่มีเอกสาร 5.4 Laravel สำหรับsecure_url()ให้ที่นี่: laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

อัพเดตจากเอกสาร 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') }}">

17

หากต้องการให้มันทำงานกับ URL ที่ไม่ได้สวยฉันต้องทำ:

asset('/');

3
สำหรับความต้องการของฉันนี่คือสิ่งที่ดีที่สุด<base href="{{ asset('/') }}" />
พฤศจิกายน

ขอชื่นชมคุณ! มันเข้ากันได้พอดี<base href="..."/>เพราะมีการทับท้าย
vintproykt

13

Laravel มีฟังก์ชันผู้ช่วยมากมายและสำหรับความต้องการของคุณคุณสามารถทำได้ง่ายๆ

ใช้ฟังก์ชั่นurl ()ของ Laravel Helpers

แต่ในกรณีของLaravel 5.2คุณจะต้องใช้url ('/')

นี่คือรายการของฟังก์ชั่นตัวช่วยอื่น ๆ ของ Laravel


@sellereller และคุณต้องการเข้าถึงโฟลเดอร์ / ไฟล์ภายในที่คุณสามารถทำได้url('/css/style.css')
Akshay Khale


3

ความเป็นไปได้อื่น: {{ URL::route('index') }}


ไม่แน่ใจว่าทำไมสิ่งนี้ถึงได้ลงเนื่องจากมันใช้งานได้จริงและไม่มีใครให้ตัวเลือกเช่นกัน?
CptChaos

2
ไม่ใช่ downvote ของฉัน แต่ฉันเดาว่าเหตุผลก็คือคุณไม่สามารถรับประกันได้ว่าการตั้งชื่อเส้นทางรูทของคุณจะเป็น "ดัชนี" ในทุกแอพ
โจนาธาน

3

คุณยังสามารถใช้ URL :: ถึง ('/') เพื่อแสดงภาพใน Laravel โปรดดูที่ด้านล่าง:

<img src="{{URL::to('/')}}/images/{{ $post->image }}" height="100" weight="100"> 

สมมติว่าภาพของคุณถูกจัดเก็บภายใต้ "สาธารณะ / ภาพ"


3

ในการรับ URL ของแอปที่คุณกำหนดค่าคุณสามารถใช้:

Config::get('app.url')

คำจำกัดความนี้ใช้เฉพาะใน Laravel cli app.urlมันดูเหมือนจะเป็นทางเลือก
Wallace Maxters

1
ดีอีกต่อไป env ('APP_URL') อาจเป็นตัวเลือกที่ดีที่สุด
Kenyon

2

ฉันใช้สิ่งนี้และทำงานให้ฉันใน Laravel 5.3.18:

<?php echo URL::to('resources/assets/css/yourcssfile.css') ?>

หมายเหตุสำคัญ: สิ่งนี้จะใช้ได้เฉพาะเมื่อคุณลบ "สาธารณะ" ออกจาก URL ของคุณแล้ว ในการทำเช่นนี้คุณสามารถดูบทแนะนำที่เป็นประโยชน์นี้


2

อย่างไรก็ตามถ้าเส้นทางของคุณมีชื่อเช่น:

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


2

ตรวจสอบสิ่งนี้ -

<a href="{{url('/abc/xyz')}}">Go</a>

นี่ใช้งานได้สำหรับฉันและฉันหวังว่าจะได้ผลสำหรับคุณ


1

คุณสามารถใช้ซุ้มหรือฟังก์ชั่นผู้ช่วยดังต่อไปนี้

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;
}

0

ฉันพบวิธีอื่นในการรับ URL พื้นฐานเพื่อแสดงค่าของตัวแปรสภาพแวดล้อม APP_URL

env('APP_URL')

ซึ่งจะแสดง URL พื้นฐานเช่นhttp: // // domains_your yours_website ระวังว่าคุณได้ตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์. env (ที่มีอยู่ในโฟลเดอร์รูท)



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.