Mage :: getBaseUrl () กับ Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_WEB)


26

มีเหตุผลที่จะใช้Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)มากกว่าMage::getBaseUrl()หรือไม่ ฉันเคยเห็นทั้งสองใช้แล้วและพวกเขาทั้งสองกลับมาเหมือนกัน ซ้ำซ้อนอีกต่อไปหรือไม่ มันใช้ 2 ฟังก์ชั่นการโทรเช่นกัน

นอกจากนี้ฉันเห็นว่าMage_Core_Model_Store::URL_TYPE_WEBเพียงแค่คืนค่าสตริง 'เว็บ' ประเด็นคืออะไร

คำตอบ:


40

ดูครั้งแรกgetBaseUrl()ที่Mage.php

 public static function getBaseUrl($type = Mage_Core_Model_Store::URL_TYPE_LINK, $secure = null)
    {
        return self::app()->getStore()->getBaseUrl($type, $secure);
    }

ในคำง่าย ๆ เราสามารถพูดได้:

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)ชี้ให้เห็นวีโอไอพีของคุณจากSite Urlthis url Magento is running it System

และอีกคำหนึ่งเราสามารถพูดได้ Mage::getBaseUrl() give the url which is linking your magento internal page urls That MVC page

Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_WEB):

ชุดค่าที่ : จาก Admin>System>Configuration>WebSite>Secure/Unsecure -> Base url

Mage :: getBaseUrl ():

ชุดค่าที่ : จาก Admin>System>Configuration>WebSite>Secure/Unsecure -> Base Link url

ความแตกต่างหลักที่แสดง:

เมื่อใดก็ตามที่เราเปิดใช้งานUse Web Server Rewrites = noจาก admin>system>Web>Search Engines Optimization Rewrites

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) ให้คุณค่าของ http://youdomain/

แต่ Mage::getBaseUrl()ให้คุณค่าที่ให้คุณค่า http://youdomain/index.php/จริง ๆ Mage_Core_Model_Store::URL_TYPE_LINK

เมื่อคุณhit http://youdomain/โทรหาMage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) url แต่times you can see all pageลิงค์ของคุณsite is starting with http://youdomain/index.php/ นั่นก็หมายความว่ามันใช้Mage::getBaseUrl()/ Mage::getBaseUrl($type = Mage_Core_Model_Store::URL_TYPE_LINK, $secure = null)

ตัวอย่าง:

หากคุณสร้างโฟลเดอร์amit at Magento root dir and there you have put a file test.jsแล้วคุณต้องการเรียกไฟล์นี้ที่ magento home จากนั้นคุณสามารถใช้รหัสนี้

<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'amit/test.js'; ?>

แล้วมันจะให้ URL

www.yourdomain/amit/test.js

หากคุณใช้เฉพาะMage::getBaseUrl()ที่ให้ u www.yourdomain/index.php/amit/test.jsซึ่งหมายถึง test.js ไม่สามารถเข้าถึงได้ (เมื่อปิดการใช้งาน rewite)

แต่คุณได้สร้างตัวควบคุมใหม่และการกระทำใหม่แล้วคุณสามารถใช้

Mage::getBaseUrl().'yourmodulerouter/yourcontroller/youraction'

it show  url like `http://yourdomain/index.php/yourmodulerouter/yourcontroller/youraction`

หรือให้http://yourdomain/yourmodulerouter/yourcontroller/youraction(เมื่อเปิดใช้งานการเขียนซ้ำ)


ดังนั้นMage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)จะทำงานได้ดีขึ้นเมื่อเราเปิดการเขียนใหม่
Buttle Butkus

no.Mage :: getBaseUrl (): ใช้สำหรับ magento pageliks เสมอ
Amit Bera

ขอบคุณสำหรับการช่วยเหลือ. แต่คุณบอกว่าMage::getBaseUrl()ให้ลิงค์ที่มีindex.phpในนั้น ทำไมฉันถึงต้องการดัชนีเสริมนั่นถ้าฉันไม่ต้องการมัน?
Buttle Butkus

ถ้าฉันส่งไม่ส่งพารามิเตอร์ใด ๆ ในฟังก์ชั่น getBaseUrl () แล้วมันจะส่งถ้า params เป็น $ type = Mage_Core_Model_Store :: URL_TYPE_LINK, $ secure = null)
Amit Bera

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