1

CodeIgniter で form_helper を使用しています。

$current = $this->lang->mci_current();
$uri = 'contact';
$url = $this->lang->mci_make_uri($current, $uri);     // output "en/contact"

echo form_open($url);

質問:

form_helper を変更してデフォルトに変更する方法:

echo form_open('contact');

しかし、前のコードで定義した機能を備えています。

私は、それを変更する方法と自分のヘルパー を使用する方法について、そこに自分のフォームヘルパー ( ../application/helpers/MY_form_helper.php)を作成できると仮定していますか?ヘルパーの前に「my_」を付けると、デフォルトの form_helper をオーバーライドすることになりますか? デフォルトの form_helper を拡張する必要がありますか?

これは私がなんとかしたことです:

注: 私は MVC と OOP の初心者で、CodeIgniter で学習しています。

私の試み:

if (!function_exists('form_open')) {

    function form_open($action = '', $attributes = '', $hidden = array()) {
        $CI = & get_instance();

        $current = $CI->lang->mci_current();
        $action = $CI->lang->mci_make_uri($current, $action);

        if ($attributes == '') {
            $attributes = 'method="post"';
        }

        // If an action is not a full URL then turn it into one
        if ($action && strpos($action, '://') === FALSE) {
            $action = $CI->config->site_url($action);
        }

        // If no action is provided then set to the current url
        $action OR $action = $CI->config->site_url($CI->uri->uri_string());

        $form = '<form action="' . $action . '"';

        $form .= _attributes_to_string($attributes, TRUE);

        $form .= '>';

        // Add CSRF field if enabled, but leave it out for GET requests and requests to external websites   
        if ($CI->config->item('csrf_protection') === TRUE AND !(strpos($action, $CI->config->base_url()) === FALSE OR strpos($form, 'method="get"'))) {
            $hidden[$CI->security->get_csrf_token_name()] = $CI->security->get_csrf_hash();
        }

        if (is_array($hidden) AND count($hidden) > 0) {
            $form .= sprintf("<div style=\"display:none\">%s</div>", form_hidden($hidden));
        }

        return $form;
    }

}
4

1 に答える 1

0

HelpersありCIませんclass(es)。それらは単なる関数です。独自のヘルパーを作成して に保存しますapplication/helpers。通常どおりヘルパーをロードする

$this->load->helper('helperName'); #your file name should be helperName_helper.php

デフォルトのヘルパーを拡張したい場合はMY_、デフォルトのヘルパー名を追加して、あなたが言ったように保存しapplication/helpersてください。これがadd / overrideデフォルトの機能になります。

于 2013-11-08T12:20:37.493 に答える