Je n'arrive pas à écrire quoi que ce soit à partir de la deuxième forme de cette classe.La deuxième forme de la page ne fonctionne pas
Le premier formulaire télécharge le fichier correctement, et je suis capable de l'analyser en un tableau. Cependant, la deuxième forme que j'échoue sur la page ne fait rien sur soumettre.
Vous avez des idées?
Merci!
public function __construct() {
add_action('admin_menu', array($this, 'asbcb'));
}
function asbcb() {
$page_title = 'Build';
$menu_title = 'Build';
$capability = 'manage_options';
$menu_slug = 'build';
$function = array($this, 'sbcb');
add_management_page($page_title,$menu_title,$capability,$menu_slug,$function);
}
function sbcb() {
$output = '';
$output .= '<form id="upload" action="" method="post" enctype="multipart/form-data">';
$output .= '<p><input type="file" name="file"></p>';
$output .= get_submit_button("Upload","primary","upload");
$output .= '</form>';
echo $output;
$this->upload();
}
function upload() {
if(isset($_POST['upload']) && ! empty($_FILES)) {
$file = $_FILES['file'];
$dir = plugin_dir_path(__FILE__);
$path = $dir.'pages/';
if(!is_dir($path)) mkdir($path);
$url = $path.$file['name'];
$uploaded = move_uploaded_file($file['tmp_name'], $path.$file['name']);
if ($uploaded) {
$this->parse_CSV($url);
} else {
print_r($file['error']);
}
}
}
function parse_csv($csv) {
$columns = array();
if (($handle = fopen($csv, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$columns[] = $data;
}
fclose($handle);
}
$this->fields();
}
function fields(){
$output = '';
$output .= '<form id="build" action="" method="post">';
$output .= '<select class="fields" name="fields[]">';
$output .= '<option value="title">Title</option>';
$output .= '<option value="slug">Slug</option>';
$output .= '<option value="metatitle">Meta title</option>';
$output .= '<option value="metadesc">Meta description</option>';
$output .= '<option value="template">Template</option>';
$output .= '<option value="metakey">Meta key</option>';
$output .= '<option value="metavalue">Meta value</option>';
$output .= '</select> ';
$output .= get_submit_button("Build","primary","build");
$output .= '</form>';
echo $output;
$this->fields_to_array();
}
function fields_to_array() {
if (isset($_POST['fields'])) {
$fields = $_POST['fields'];
var_dump($fields);
}
}
Hey @mickmackusa - Merci pour l'info. Que faire si je veux deux actions différentes? – producto
@producto Peu importe les attributs que vous écrivez dans les formulaires. Les données de formulaire sont essentiellement piégées dans chaque bloc de formulaire. – mickmackusa