Search code examples
phpcontrollercs-cart

Cs cart in admin new controller gives an error


I want to develop a new page in admin panel of CSCART.I made a controller pincode.php and mode 'add' and create a tpl add.tpl in views.when a call 'admin.php?dispatch=pincode.add'. It gives an http error.

Controller(cscart\app\controllers\backend\pincode.php)

<?php
use Tygh\Registry;
if (!defined('BOOTSTRAP')) { die('Access denied'); }

if ($mode == 'add') {
    Registry::get('view')->display('views/pincode/add.tpl');
}
?>

View(cscart\design\backend\templates\views\pincode\add.tpl):

 <form action="" method="post" name="add_form">
   <input type="text" name="pincode" />
   <input type="text" name="city" />
   <input type="text" name="state" />
 </form>

When I put echo die in controller it shows the echo content.


Solution

  • Is better to create a new add-on called pincode ( you can generate one here ) in this whay you will be upgrade ready ;)

    add controller file

    cscart/app/addons/pincode/controllers/backend/pincode.php
    

    with content

    <?php
    /*
     * © 2015 Hungryweb
     * 
     * @website: www.hungryweb.net
     * @support: [email protected]
     *  
     */
    
    if ( !defined('BOOTSTRAP') ) { die('Access denied'); }
    
    use Tygh\Registry;
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
        fn_trusted_vars (
            'pincode'
        );
    
        if ($mode == 'update') {
            if (isset($_REQUEST['pincode'])) {
                #add your code
                print_r($_REQUEST['pincode']);
                exit;
            }
         }
    }
    
    if ($mode == 'update') {
    
        $pincode = array();
        $pincode['pin'] = '';
        $pincode['city'] = '';
        $pincode['state'] = '';
        Registry::get('view')->assign('pincode', $pincode);
    
    }
    

    add tpl file

    cscart/design/backend/templates/addons/pincode/views/pincode/update.tpl
    

    with content (is better update mode then add )

    {capture name="mainbox"}
    
    <form action="{""|fn_url}" method="post" name="pincode_update_form" class="form-horizontal form-edit">
    
        {include file="common/subheader.tpl" title=__("information") target="#pincode_information_setting"}
        <div id="pincode_information_setting" class="in collapse">
        <fieldset>
    
            <div class="control-group">
                <label for="elm_pincode" class="control-label cm-required">{__("pincode_field")}:</label>
                <div class="controls">
                    <input type="text" name="pincode[pin]" id="elm_pincode" size="55" value="{$pincode.pin}" class="input-large" />
                </div>
            </div>
    
            <div class="control-group">
                <label for="elm_city" class="control-label cm-required">{__("city")}:</label>
                <div class="controls">
                    <input type="text" name="pincode[city]" id="elm_city" size="55" value="{$pincode.city}" class="input-large" />
                </div>
            </div>
    
            <div class="control-group">
                <label for="elm_state" class="control-label cm-required">{__("state")}:</label>
                <div class="controls">
                    <input type="text" name="pincode[state]" id="elm_state" size="55" value="{$pincode.state}" class="input-large" />
                </div>
            </div>
    
        </fieldset>
      </div>
    
    {capture name="buttons"}
         {assign var="hide_first_button" value=false}
         {assign var="hide_second_button" value=true}
        {include file="buttons/save_cancel.tpl" but_name="dispatch[pincode.update]" hide_first_button=$hide_first_button hide_second_button=$hide_second_button but_target_form="pincode_update_form"}
    {/capture}
    
    </form>
    
    {/capture}
    
    {capture name="sidebar"}
        <div class="sidebar-row">
            <h6>{__("pages")}</h6>
            <div class="nested-tree">
                Maybe you need ;)
            </div>
        </div>
    {/capture}
    
    {include file="common/mainbox.tpl" title=__('pincode_update') sidebar=$smarty.capture.sidebar sidebar_position="right" content=$smarty.capture.mainbox buttons=$smarty.capture.buttons adv_buttons=$smarty.capture.adv_buttons}
    

    zip archive with this CS-Cart add-on can be downloaded from here

    I hope that helps,