Magento2 সম্মুখভাগে কীভাবে কাস্টম ফর্ম তৈরি করবেন?


19

আমি অগ্রভাগে একটি কাস্টম ফর্ম তৈরি করতে চাই এবং এই ফর্মটি ব্যবহার করে গ্রাহক অ্যাপয়েন্টমেন্ট পেতে পারেন।

আমার ফর্মে, আমার 4 টি ক্ষেত্র রয়েছে।

  1. প্রথম নাম (পাঠ্য ফাইল করা হয়েছে)
  2. শেষ নাম (পাঠ্য ফাইল করা হয়েছে)
  3. ফোন নম্বর (সংখ্যা ক্ষেত্র)
  4. একটি সময় বুকিং (তারিখের সময় ক্যালেন্ডার সহ)

সুতরাং যখন কোনও গ্রাহক এই ফর্মটি পূরণ করেন এবং জমা দেন তখন আমি এই ডেটাটি ডাটাবেসে sertোকাতে এবং প্রশাসক বিভাগে প্রদর্শন করতে চাই।

আমি এই কার্যকারিতাটি ম্যাজেন্টো -২.১ এ কীভাবে অর্জন করতে পারি

আমি এই লিঙ্কটি উল্লেখ করেছি তবে এটি আমার কার্যকারিতা অনুযায়ী নয়।

উত্তর:


41

ধরে নিচ্ছি আপনার নিম্নলিখিত মডিউল রয়েছে Company/Module

ফ্রন্টএন্ড রাউটার তৈরি করুন

/ অ্যাপ / কোড / সংস্থা / মডিউল / ইত্যাদি / সম্মুখভাগ / রুট.এক্সএমএল

পরিচালনার জন্য একটি রুট তৈরি করুন:

  • এইচটিএমএল ফর্ম টেম্পলেট প্রদর্শন করতে যাচ্ছি অনুরোধ পান
  • এক্সন কন্ট্রোলার ক্লাসে ফর্ম ডেটা প্রেরণ করতে যাচ্ছেন অনুরোধ করুন।
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="companymodule" frontName="companymodule">
            <module name="Company_Module"/>
        </route>
    </router>
</config>

লেআউটটি তৈরি করুন

/ অ্যাপ / কোড / সংস্থা / মডিউল / ভিউ / সম্মুখভাগ / লেআউট / মডিউল_ইন্ডেক্স_বুকিং.এক্সএমএল

ফর্ম পৃষ্ঠা পিটিএইচটিএমএল টেমপ্লেটে ব্লকটি সংযুক্ত করার জন্য একটি প্রাথমিক বিন্যাস তৈরি করুন

<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <title>HTML title - The booking form page</title>
    </head>
    <body>
        <referenceBlock name="navigation.sections" remove="true" />
        <referenceContainer name="content">
            <block class="Company\Module\Block\Booking" name="companymodule.booking" template="Company_Module::booking.phtml"/>
        </referenceContainer>
    </body>
</page>

ব্লক তৈরি করুন

/ অ্যাপ / কোড / সংস্থা / মডিউল / ব্লক / বুকিং.এফপি

আপনি আপনার ফর্মের জন্য চান এমন অনেকগুলি ক্রিয়াকলাপ সহ একটি ব্লক তৈরি করুন।

<?php

namespace Company\Module\Block;

class Booking extends \Magento\Framework\View\Element\Template
{
    /**
     * Construct
     *
     * @param \Magento\Framework\View\Element\Template\Context $context
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\View\Element\Template $context,
        array $data = []
    )
    {
        parent::__construct($context, $data);
       }

    /**
     * Get form action URL for POST booking request
     *
     * @return string
     */
    public function getFormAction()
    {
            // companymodule is given in routes.xml
            // controller_name is folder name inside controller folder
            // action is php file name inside above controller_name folder

        return '/companymodule/controller_name/action';
        // here controller_name is index, action is booking
    }
}

টেমপ্লেট তৈরি করুন

/ অ্যাপ / কোড / সংস্থা / মডিউল / ভিউ / সম্মুখভাগ / টেমপ্লেট / বুকিং.এফটিএমএল

আপনার এইচটিএমএল ফর্মের সাথে একটি টেম্পলেট তৈরি করুন এবং রাউটিংয়ের সাথে সম্পর্কিত ফর্ম ক্রিয়া যুক্ত করুন।

<h1>Booking page</h1>

<form action="<?php echo $block->getFormAction() ?>" method="post">
    <input name="firstname" type="text">
    <input name="lastname" type="text">
    <input name="phone" type="text">
    <input name="bookingTime" type="date">
    <input type="submit" value="Send booking informations">
</form>

অ্যাকশন কন্ট্রোলার তৈরি করুন

/ অ্যাপ / কোড / সংস্থা / মডিউল / নিয়ন্ত্রক / সূচক / বুকিং.এফপি

রুটে অনুরোধগুলি পরিচালনা করতে একটি অ্যাকশন কন্ট্রোলার তৈরি করুন।

<?php

namespace Company\Module\Controller\Index;

use Magento\Framework\Controller\ResultFactory;

class Booking extends \Magento\Framework\App\Action\Action
{
    /**
     * Booking action
     *
     * @return void
     */
    public function execute()
    {
        // 1. POST request : Get booking data
        $post = (array) $this->getRequest()->getPost();

        if (!empty($post)) {
            // Retrieve your form data
            $firstname   = $post['firstname'];
            $lastname    = $post['lastname'];
            $phone       = $post['phone'];
            $bookingTime = $post['bookingTime'];

            // Doing-something with...

            // Display the succes form validation message
            $this->messageManager->addSuccessMessage('Booking done !');

            // Redirect to your form page (or anywhere you want...)
            $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
            $resultRedirect->setUrl('/companymodule/index/booking');

            return $resultRedirect;
        }
        // 2. GET request : Render the booking page 
        $this->_view->loadLayout();
        $this->_view->renderLayout();
    }
}

পুনরায় শুরু করার সময় আপনার কাছে নিম্নলিখিত স্থাপত্য থাকবে:

অ্যাপ্লিকেশন
  কোড
  | । সংস্থা
  | | ├ মডিউল
  | | | ├ ব্লক
  | | | | Ing Booking.php
  | | | ├ নিয়ামক
  | | | | । সূচক
  | | | | | Ing Booking.php
  | | | । ইত্যাদি
  | | | | On সম্মুখভাগ
  | | | | | ├ways.xML
  | | | দর্শন
  | | | | On সম্মুখভাগ
  | | | | | ├ বিন্যাস
  | | | | | | ├ মডিউল_ইন্ডেক্স_বুকিং.এক্সএমএল
  | | | | | ├ টেমপ্লেট
  | | | | | | ├ book.phtml

তারপরে নিম্নলিখিত কমান্ডগুলি চালান:

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush

তারপরে আপনি আপনার কাস্টম ফর্ম পৃষ্ঠাটিতে অ্যাক্সেস করতে পারবেন: http: // লোকালহস্ট / কোম্পানী মডুল / সূচক / বুকিং

শুভ কোডিং!


আমি কিভাবে এই সামনের দিকে দেখতে পারি?
নবীনবোস

সামনের প্রান্তে কিছুই না দেখিয়ে, আমি রুটস। এক্সএমএল ফ্রন্টনামটি ব্যবহার করেছি, তবে এটি 404 পাওয়া যায় না এমন পৃষ্ঠায় পুনঃনির্দেশ করছে
নবীনবোস

হ্যাঁ, আমি এটি অনুসরণ করেছি এবং পুনর্নির্দেশ 404
খুশবু_সিপল

2
আপনার কন্ট্রোলারটিকে সূচক নামক ফোল্ডারে রাখার জন্য দয়া করে নোট করুন। আমি এটি চেষ্টা করেছি আমি 404 পৃষ্ঠা পেয়েছি। তবে আমি যেমন devdocs.magento.com এ গিয়ে স্ট্যান্ডার্ড নির্দেশাবলী পড়েছি, আমি আমার সমস্যা সমাধান করতে সক্ষম হয়েছি। আমি আশা করি এটা তোমাকে সাহায্য করবে।
ম্যাজস্ট্রিক্স

1
@ মার্তিজনভানহুফ আপনি যদি যোগাযোগ বিক্রেতার মডিউলটি প্রসারিত করেন তবে মডিউলটির ফাইল গঠন কী তা অনুসরণ করতে ভুলবেন না। এবং সেখানে আপনি নিজের যুক্তি প্রসারিত এবং তৈরি করতে পারেন।
ম্যাজস্ট্রিক্স

0

পছন্দ প্রতিক্রিয়া থেকে আমি লাইন পরিবর্তন if($post){করতেif($post['firstname']){

এবং তাই আমি সম্মুখভাগ থেকে ফর্মটি দেখতে পারি এবং অন্য ক্রিয়ায় প্রেরণের জন্য একটি ক্লিক করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.