लारवेल: बेस यूआरएल प्राप्त करें


182

आसान सवाल है, लेकिन इसका जवाब काफी मुश्किल है। Codeigniter में, मैं url हेल्पर को लोड कर सकता था और फिर बस कर सकता था

echo base_url();

मेरी साइट का URL प्राप्त करने के लिए। क्या लारवेल में एक बराबर है?

जवाबों:


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
और उदाहरण से इसकी संभावित उपस्थिति के बावजूद, यह लारवेल के मूल पथ के सापेक्ष है, इसलिए यदि आप /something/इसमें स्थापित हैं तो आप सही URL बनाएंगे।
सइयोजोज

@deFitas और #ceejayoz यूआरएल का उपयोग कैसे करें :: लार्वा स्थानीयकरण के साथ?
मुबाशर इकबाल

1
@ मुबाशरइकबाल अगर मैं आपके प्रश्न को, {{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

156

लारवेल <5.2

echo url();

लारवेल> = 5.2

echo url('/');

आशा है कि यह आपकी मदद करता है


4
क्या आप केवल कोड-स्निपेट के बजाय स्पष्टीकरण शामिल करने के लिए इस उत्तर का विस्तार कर सकते हैं?

2
परीक्षा: मेरे पास स्थानीय में साइट है: लोकलहोस्ट / एबीसी इन कोडाइनाइटर: इको बेस_उर्ल (); => मुझे लारवेल में लोकलहोस्ट / एबीसी मिलता है : इको उरल (); => मुझे लोकलहोस्ट / एबीसी भी मिलता है।
गुयेन थान्ह बानी

1
सेगमेंट के साथ एक url के लिए इसका उपयोग करें: url ()। '/'। \ Request :: सेगमेंट (1)। '/'। \ 'रिक्वेस्ट :: सेगमेंट (2)
0x1ad2

20
ध्यान दें कि यह अब 5.2 में काम नहीं करता है: github.com/laravel/framework/issues/11479 आप url('/')इसके बजाय उपयोग कर सकते हैं
4lun

1
asset('/')मेरे लिए बेहतर लगता है क्योंकि इसमें ट्रेलिंग स्लैश है जो कि बेस हियर में आवश्यक है।
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()मौजूद नहीं है। क्या लारावेल 5.4 में भी यह बदलाव आया?
एंड्रियास लिनर्ट

नहीं, यह लार्वा 5.4 का हिस्सा है। मैं वास्तव में टिप्पणी नहीं कर सकता क्योंकि मैंने कभी भी लुमेन का उपयोग नहीं किया है, लेकिन 5.4 लारवेल प्रलेखन secure_url()यहां उपलब्ध है: laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

2018 लारवेल रिलीज़ (5.7) प्रलेखन से कुछ और यूआरएल () कार्यों के साथ अपडेट और यह उपयोग है।

प्रश्न: लारवेल में साइट का URL प्राप्त करने के लिए?

यह एक सामान्य प्रश्न है, इसलिए हम इसे विभाजित कर सकते हैं।

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. फाइल यूआरएल

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('/') }}" />
15 rneves

आप के लिए यश! <base href="..."/>स्लैश के पीछे आने की वजह से यह सही बैठता है
vintproykt

13

लारवेल सहायक कार्यों का गुच्छा प्रदान करता है और आपकी आवश्यकता के लिए आप बस कर सकते हैं

लारवेल हेल्पर्स के url () फ़ंक्शन का उपयोग करें

लेकिन लारवेल 5.2 के मामले में आपको url ('/') का उपयोग करना होगा

यहाँ Laravel के अन्य सभी सहायक कार्यों की सूची दी गई है


@sambellerose और क्या आप इनर फोल्डर / फाइल्स एक्सेस करना चाहते हैंurl('/css/style.css')
अक्षय खले

13

यह:

echo url('/');

और इस:

echo asset('/');

दोनों ने मेरे मामले में होम यूआरएल प्रदर्शित किया :)


3

एक अन्य संभावना: {{ URL::route('index') }}


निश्चित नहीं है कि यह क्यों घट गया, क्योंकि यह वास्तव में काम करता है और किसी ने भी विकल्प नहीं दिया?
५२ पर CptChaos

2
मेरी नीचता नहीं, लेकिन मैं यह अनुमान लगा रहा हूं कि आप अपने रूट के नामकरण की गारंटी हर ऐप में "इंडेक्स" नहीं दे सकते।
जोनाथन

3

आप Laravel में चित्र प्रदर्शित करने के लिए URL :: to ('/') का उपयोग कर सकते हैं। कृपया नीचे देखे:

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

मान लें कि, आपकी छवि "सार्वजनिक / छवियों" के तहत संग्रहीत है।


3

केवल एप्लिकेशन url प्राप्त करने के लिए, जिसे आपने कॉन्फ़िगर किया था, जिसका आप उपयोग कर सकते हैं:

Config::get('app.url')

इस परिभाषा का उपयोग केवल लारवेल सीएलआई में किया जाता है। app.urlयह एक
गिरावट के रूप में

1
खैर, अब ('APP_URL') शायद सबसे अच्छा विकल्प होगा।
केन्याई

2

मैंने इसका इस्तेमाल किया और इसने लारावेल 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

आप निम्नलिखित के अनुसार facades या सहायक समारोह का उपयोग कर सकते हैं।

echo URL::to('/');
echo url();

Laravel अनुरोध के लिए सिम्फनी घटक का उपयोग करते हुए, निम्नलिखित के अनुसार 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

मुझे पर्यावरण चर APP_URL के मूल्य को प्रदर्शित करने के लिए बस बेस यूआरएल प्राप्त करने का एक और तरीका मिला

env('APP_URL')

जो बेस यूआरएल को http: // domain_your // yours_website की तरह प्रदर्शित करेगा । खबरदार यह मान लें कि आपने पर्यावरण चर को .env फ़ाइल में सेट किया है (जो रूट फ़ोल्डर में मौजूद है)।


0

आप इसे लारवल 5 पर अनुरोध से प्राप्त कर सकते हैं

request()->getSchemeAndHttpHost();

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.