【问题标题】:Cs cart in admin new controller gives an error管理员新控制器中的 Cs cart 出现错误
【发布时间】:2015-02-14 08:51:39
【问题描述】:

我想在 CSCART 的管理面板中开发一个新页面。我制作了一个控制器 pincode.php 和模式 'add' 并在 views.when 调用'admin 时创建一个 tpl add.tpl .php?dispatch=pincode.add'。它给出了一个 http 错误。

控制器(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');
}
?>

视图(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>

当我将 echo die 放入控制器时,它会显示 echo 内容。

【问题讨论】:

    标签: php controller cs-cart


    【解决方案1】:

    最好创建一个名为 pincode 的新插件(您可以生成一个 here),这样您就可以升级了;)

    添加控制器文件

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

    有内容

    <?php
    /*
     * © 2015 Hungryweb
     * 
     * @website: www.hungryweb.net
     * @support: support@hungryweb.net
     *  
     */
    
    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);
    
    }
    

    添加tpl文件

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

    有内容(更新模式比添加更好)

    {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}
    

    可以从here下载带有此 CS-Cart 插件的压缩包

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      只需将 add.tpl 重命名为 update.tpl。
      fn.control.php文件中有一段代码:

      if ($mode == 'add') {
          $tpl = 'update.tpl';
      } elseif (strpos($mode, 'add_') === 0) {
          $tpl = str_replace('add_', 'update_', $mode) . '.tpl';
      } else {
          $tpl = $mode . '.tpl';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        • 2021-06-25
        相关资源
        最近更新 更多