2016-07-20 4 views
1

私はウェブサイト上で編集可能なテーブルを作成するためのjQueryプラグインのDataTableを使用していると私は、フィールドのメソッドへの呼び出しが動的に引数を受け取る作るしようとしている:私は配列にvalue1とvalue2のを持っている動的に作成された引数を使用して静的クラスメソッドを呼び出す方法は?

Editor::inst($db, $table, $primary_key) 
    ->fields(
     // this part needs to be dynamic 
     Field::inst('value1') 
      ->validator('Validate::numeric'), 
     Field::inst('value2') 
      ->validator('Validate::numeric') 
    ) 
    ->process($_POST) 
    ->json(); 

をしかし、2つ以上あることがあります。数値は作成したいテーブルによって異なります。

$columns = array("value1", "value2"); 

すべての値が正しく評価されるようにメソッドコールで取得するにはどうすればよいですか?

私は本当に使用したくないですケース。これを行うにはより良い方法が必要です。

答えて

0

datatablesのドキュメントから。

fields()メソッドは、定義したい数のフィールドインスタンスを取ることができ、追加のフィールドを追加するために複数回呼び出すこともできます。

$columns = array('value1', 'value2'); 
$editor = Editor::inst($db, $table, $primary_key); 
foreach ($columns as $field) { 
    $editor->fields(Field::inst($field)->validator('Validate::numeric')); 
} 
$editor->process($_POST) 
    ->json(); 

また、のようなものとバリデータを動的にすることができます:

$columns = array('value1' => 'Validate::numeric', 'value2' => 'Validate::notEmpty'); 
$editor = Editor::inst($db, $table, $primary_key); 
foreach ($columns as $field => $validator) { 
    $editor->fields(Field::inst($field)->validator($validator)); 
} 
$editor->process($_POST) 
    ->json(); 
0

func_get_args()func_num_args()関数を使用して、動的パラメータを操作できます。あなたはこのようにそれらを使用することができます

function yourFunction() { 
    $totalParams=func_num_args();  
    echo "Total parameters: ".$totalParams; 
    $params = func_get_args(); 
    foreach($params as $i=>$param) { 
     // $param is passed value. 
     // $i is the index. 
    } 
} 

はちょうどこのような目的球を呼び出し、関数に渡される引数の数を返します()
yourFunction('param1value','param2value','param3value'); 

func_num_args。

func_get_args()は、関数の引数リストを含む配列を返します。

+0

あなたはそれが私の特定のユースケースのために有用であることを確認していますか?私はそのような関数を呼び出すことはできません。なぜなら、そこにいくつの引数があるのか​​わからないからです。 –

+0

私がこれら2つの関数を呼んだので、関数を呼び出すメソッドに依存しません。実際の数値を知らなくても、関数に渡されるすべての引数を取得するのに役立ちます。 –

+0

これを私のコードに実装する方法はわかりません。 –

関連する問題