0

ステートメントに続く少ないコード (factorize) を記述する方法はありますか。私の場合、webform_client_form_AKEY があり、AKEY 変数が変更され、変数が uri に渡されます (?C= = 1...)。ありがとうございました

switch ($form_id)
{
case 'webform_client_form_9944':
    $form['#action'] = url('section/client-tool-box/appointment?c=1');          
    break;
case 'webform_client_form_9883':
    $form['#action'] = url('section/client-tool-box/appointment?c=2'); 
    break;
case 'webform_client_form_9884':
    $form['#action'] = url('section/client-tool-box/appointment?c=3');          
    break;
...
}
4

7 に答える 7

3

「辞書」アプローチを使用します。

$array = array(
    "webform_client_form_9944" => "1",
    "webform_client_form_9883" => "2",
    "webform_client_form_9884" => "3"
);

if (array_key_exists($array, $form_id))
    $form['#action'] = url('section/client-tool-box/appointment?c=' . $array[$form_id]);
else
    $form['#action'] = ""; // default
于 2012-09-05T09:57:48.867 に答える
2
$urls = array(
  'webform_client_form_9944' => 'section/client-tool-box/appointment?c=1',
  'webform_client_form_9883' => 'section/client-tool-box/appointment?c=2',
   ...
);

$form['#action'] = url($urls[$form_id]);
于 2012-09-05T09:57:26.573 に答える
0

あなたはこの方法を試すことができます

$form_id= 'webform_client_form_9944';
$cons = 'webform_client_form_';

switch($form_id){
    case $cons.'9944':
        $c = 1;
        break;
    case $cons.'9883':
        $c = 2;
        break;
}
$form['#action'] = url('section/client-tool-box/appointment?c='.$c);
于 2012-09-05T09:59:12.657 に答える
0

「form_id」から「c」へのマッピングを配列に保持するのはどうですか? そのほうが維持しやすいと思います。また、重複するコードはもうありません。

<?php
$form_id = 'webform_client_form_9944';

$forms = array(
    '9944' => '1',
    '9883' => '2',
    '9884' => '3'
);

$id = str_replace('webform_client_form_', '', $form_id);

if (isset ($forms[$id])) {
    $form['#action'] = url('section/client-tool-box/appointment?c=3');
}
于 2012-09-05T10:01:06.273 に答える
0

ここで書くコードを減らすことは、実際には問題ではないと思います。しかし、データを抽象化すると、コードの保守が容易になると思います。

// Untested
$id_to_c = array(
    9944 => 1,
    9883 => 2,
    9884 => 3,
);
if( preg_match('^webform_client_form_(\\d)$', $form_id, $matches) ){
    if( array_keys_exists($matches[1], $id_to_c) ){
        $form['#action'] = url('section/client-tool-box/appointment?c=' . rawurlencode($id_to_c[$matches[1]]));   
    }
}
于 2012-09-05T10:01:23.273 に答える
0

You can do the following:

$formid = end(explode('_', $form_id));
$map = array(9944=>1, 9883=>2, 9844=>3, ...);

$form['#action'] = url("section/client-tool-box/appointment?c={$map['webform_client_form_'.$map[$formid]}");
于 2012-09-05T10:02:18.083 に答える
0

Y A :

$cat = 0; //0 : default cat
switch ($form_id) {
   case 'webform_client_form_9944': $cat = 1; break;
   case 'webform_client_form_9883': $cat = 2; break;
   case 'webform_client_form_9884': $cat = 3; break;
   ...
}
$form['#action'] = url('section/client-tool-box/appointment?c='.$cat);
于 2012-09-05T09:56:39.127 に答える