用数组填充输入

时间:2017-08-24 13:32:50

标签: php wordpress-theming

在我的jquery代码中,我有:

$("#show").append("<img src=" +attachment.url+" alt="+attachment.alt+" title="+attachment.title+" description="+attachment.caption+" class='img-responsive img-thumbnail'/><input type='hidden'  name='my_image_URL[]' value="+attachment.url+"></span>");

我的jquery代码为新闻选择的图像添加字段,并填充输入名称my_image_URL[]

在PHP中:

if ( isset( $_POST['my_image_URL'] ) ) {       
        $urls = $_POST['my_image_URL'];
         echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>';   
         }

我尝试在隐藏的输入中添加$urls数组。

之后,如果它的工作正常:

            <?php
                if ($urls != '' ) {

                foreach ($urls as $url) { 
             ?>                         
                    <img src="<?php echo $url;?>"  class="img-responsive img-thumbnail " />
                    <input name="my_image_URL[]" value="<?php echo $url;?>"/>
                </div>               
            <?php
                 };
                }
            ?>  

但是这部分代码没有填写输入:

if ( isset( $_POST['my_image_URL'] ) ) {       
        $urls = $_POST['my_image_URL'];
         echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>';   
         }

----------更新--------

options.php

 register_setting(
            'tema-setting-group',//string $option_group
            'imagens_home' //string $option_name
            //calback $sanitize_calback      
        );

---
    add_settings_field(
         'home-imagens-top',//string $id
         'Imagens',//String $title
         'tema_home_imgs',//string $calback
         'opcoes_do_tema',//string $page    
         'tema-home-options'//string $section
         //string $args          
         );


//calback
function tema_home_imgs(){   
        $urlsImagens = esc_attr( get_option( 'imagens_home' ) ); // RETURN DB DATA

        include( get_template_directory() . '/inc/templates/selecao_imagens.php');

        if ( isset( $_POST['my_image_URL'] ) ) {

        $urls = $_POST['my_image_URL'];
             echo '<input name="imagens_home" value="'.$json_encode($urls).'" style="width:300px"/>';


        }   
    }

selecao_imagens.php

<input id="my_upl_button" type="button" value="Escolher Imagens" /><br/>

    <div class="row">
            <div id="exibe" class="sortable">       

            <?php           
            $urls = json_decode($urlsImagens, true);
                if ($urls != '' ) {
                foreach ($urls as $url) { 
             ?>          
                    <img src="<?php echo $url;?>"  class="img-responsive img-thumbnail " />
                    <input name="my_image_URL[]" value="<?php echo $url;?>"/>

            <?php
                 };
                }
            ?>
    </div>
    </div>

theme_options.php

 <?php settings_errors();?>

 <form method="post" action="options.php">
    <?php settings_fields ('tema-setting-group'); ?>

    <?php do_settings_sections (
    'opcoes_do_tema'//string $page

    ); ?>



    <?php submit_button (); 

    ?>  

 </form>

--------更新2 -------

我试过了:

echo '<input name="imagens_home" value="' . htmlspecialchars(json_encode($urls)) . '" />';

但尚未填写输入内容。

我也只尝试过:

If (isset ($ _POST ['my_image_URL'])) {
 Print_r ($ _ POST ['my_image_URL']);

}

但是在提交没有出现在屏幕上的任何内容之后,在表单中正确保存所有其他输入,除了我想要保存的数组,如果我把一些手动信息就可以了。但我不明白为什么它没有捕获每个图像输入的my_image_URL []名称。表单中的操作如下:

<Form method = “post” action = “options.php”>

我正在使用设置API

由于

1 个答案:

答案 0 :(得分:1)

  

我试图在隐藏的输入中添加$ urls数组。

如果我理解,您正在尝试将数组值存储在隐藏输入中,以便稍后检索它。问题是,这不起作用......

echo '<input type="hidden" name="imagens_home" value="'.$urls.'"/>'; 

...因为当你回显PHP数组时,你得到的只是字符串Array,而不是实际的数组内容。

您可以将数组转换为json字符串:

echo '<input type="hidden" name="imagens_home" value="'.$json_encode($urls).'"/>'; 

现在您的隐藏输入有一个常规字符串。稍后,当表单发布时,您可以检索它:

$urls = json_decode($_POST['imagens_home'], true)