Magento 2 | Tạo tuyến đường lối vào


9

Tôi muốn tạo một tuyến đường lối vào tùy chỉnh. Nó nên có liên kết này:

www.mysite.com/myroute

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="myroute" frontName="myroute">
            <module  />
        </route>
    </router>
</config>

Tôi đã tạo tuyến đường nhưng tôi không biết đặt bộ điều khiển ở đâu . Bạn co thể giup tôi được không?

Cảm ơn!


Bạn có thể chấp nhận câu trả lời. Nếu nó sẽ hữu ích cho bạn :)
Rohan Hapani 18/07/18

Câu trả lời:


9

Dưới đây là ví dụ đầy đủ về cách hoạt động của tuyến đường phía trước, nó là sự kết hợp của bộ điều khiển , bố cục , khốimẫu .

Tuyến đường

ứng dụng / mã / QaisarSatti / HelloWorld / etc / frontend / Rout.xml

<?xml version="1.0"?>
<!--
/**
 * Simple Hello World Module
 *
 * @category QaisarSatti
 * @package QaisarSatti_HelloWorld
 * @author Muhammad Qaisar Satti
 * @Email qaisarssatti@gmail.com
 *
 */-->   
<config 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
  <router id="standard">
    <route id="helloworld" frontName="helloworld">
      <module name="QaisarSatti_HelloWorld" />
    </route>
  </router>
</config>

Bộ điều khiển

ứng dụng / mã / QaisarSatti / HelloWorld / Trình điều khiển / Index / Index.php

<?php
/**
 * Simple Hello World Module
 *
 * @category QaisarSatti
 * @package QaisarSatti_HelloWorld
 * @author Muhammad Qaisar Satti
 * @Email qaisarssatti@gmail.com
 *
 */

namespace QaisarSatti\HelloWorld\Controller\Index;

class Index extends \Magento\Framework\App\Action\Action
{
    public function execute()
    {
        $this->_view->loadLayout();
        $this->_view->renderLayout();
    }
}

Bố cục tập tin

ứng dụng / mã / QaisarSatti / HelloWorld / view / frontend / layout / helloworld_index_index.xml

<?xml version="1.0"?>
<!--
/**
 * Simple Hello World Module
 *
 * @category QaisarSatti
 * @package QaisarSatti_HelloWorld
 * @author Muhammad Qaisar Satti
 * @Email qaisarssatti@gmail.com
 *
 */-->
<page 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      layout="1column" 
      xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  <body>
    <referenceContainer name="content">
      <block 
            class="QaisarSatti\HelloWorld\Block\HelloWorld" 
            name="HelloWorld" 
            template="QaisarSatti_HelloWorld::HelloWorld.phtml">
        .
      </block>
    </referenceContainer>
  </body>
</page>

Tệp mẫu

ứng dụng / mã / QaisarSatti / HelloWorld / view / frontend / samples / HelloWorld.phtml

<?php
/**
 * Catalog Product Rewrite Helper
 *
 * @category QaisarSatti
 * @package QaisarSatti_HelloWorld
 * @author Muhammad Qaisar Satti
 * @Email qaisarssatti@gmail.com
 *
 */
echo 'Hello World';

Khối tùy chỉnh

ứng dụng / mã / QaisarSatti / HelloWorld / Block / HelloWorld.php

<?php
/**
 * Simple Hello World Module
 *
 * @category QaisarSatti
 * @package QaisarSatti_HelloWorld
 * @author Muhammad Qaisar Satti
 * @Email qaisarssatti@gmail.com
 *
 */

namespace QaisarSatti\HelloWorld\Block;

class HelloWorld extends \Magento\Framework\View\Element\Template
{
    public function _prepareLayout()
    {
        parent::_prepareLayout();
        $this->pageConfig->getTitle()->set(__('First Hello World Module'));
        return $this;
    }
}

Tài liệu tham khảo


4

tạo bộ điều khiển Index.php trên đường dẫn bên dưới:

/ ứng dụng / mã / UO / Bản tinUV / Trình điều khiển / Chỉ mục /

<?php
namespace UO\NewsletterUV\Controller\Index;

use Magento\Framework\App\Action\Action;

class Index extends Action
{
    public function execute()
    {
        echo "Controller call successfully";
    }
}

+1 để không quá phức tạp mọi thứ và cho thấy rằng bạn có thể tạo đầu ra trực tiếp mà không cần xác định bố cục, mẫu và khối.
jdhildeb

3

Thử cái này:

Tạo tập tin PHP tại app/code/UO/NewsletterUV/Controller/Index/với Index.php.

Mã nên như thế này trong tập tin đó.

namespace UO\NewsletterUV\Controller\Index;

use Magento\Framework\App\Action\Action;

/**
 * Class Index
 * @package UO\NewsletterUV\Controller\Index\Index
 */
class Index extends Action
{


    /**
     * Function execute
     * @return \Magento\Framework\View\Result\Page
     */
    public function execute()
    {  
        echo "Rout Called";

    }
}

3

Đối với tuyến đường này, bộ điều khiển phải ở trong UO/NewsletterUv/Controllers ...

Vì vậy, nếu bạn truy cập www.mysite.com/myroute-> nó sẽ gọiUO/Newsletter/Controllers/Index/Index.php

Nếu bạn truy cập www.mysite.com/myroute/my-action-> nó sẽ gọi UO/Newsletter/Controllers/MyAction/Index.php.

Và như thế...

Nội dung của Bộ điều khiển trông giống như câu trả lời của Rohan.

Tôi hy vọng nó sẽ giúp.


Đây là thông tin hữu ích. Nhưng tôi khá chắc chắn đó là Bộ điều khiển, không phải Bộ điều khiển.
jdhildeb

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.