2015-08-02 4 views
2

Здравствуйте поэтому я использую тонкую структуру, и у меня есть код, который проверить, если все входы не пусты, вот код:Тонкий Framework запрос проверки

$request = \Slim\Slim::getInstance()->request()->post(); 
    if($request['txt_1'] != "" AND $request['txt_2'] != "" AND $request['txt_3'] != "" AND $request['txt_4'] != "" AND $request['txt_5'] != "" AND $request['txt_6'] != "" AND $request['txt_7'] != "" AND $request['txt_8'] != "" AND $request['txt_21'] != "" AND $request['txt_22'] != "" AND $request['txt_23'] != "" AND $request['txt_24'] != "" AND $request['txt_31'] != "" AND $request['txt_32'] != "" AND $request['txt_41'] != "") { 
     $status = "0"; 
    } else { 
     $status = "1"; 
    } 

То, что я хотел сделать, это вместо кодирования всех входных данных запроса в условии, я хочу, чтобы только одна переменная проверяла все входные данные запроса, если они не пусты. Есть ли способ? Мне нравится (!empty($allFields))? Заранее спасибо.

ответ

0

Вы можете запрограммировать свой массив $ request и задать $ status, если одно из значений не пусто.

Или вы можете взорвать массив над пустой строкой, я думаю.

$status = implode ('', $request) !== '';

0

Посмотрите на следующую функцию. Он принимает два аргумента. $ requestData будет содержать все ваши параметры, полученные по запросу. $ parameters будет массивом, в котором вы напишете все параметры, которые хотите убедиться, что вы получили запрос.

Вызов функции может быть что-то вроде этого:

checkParameters($requestData,array('txt_1','txt_2','txt_3','txt_4')) ; 

В случае, если у Вас есть много параметров, вы можете также сделать отдельный массив параметров, а затем передать его в качестве аргумента.

function checkParameters($requestData,$parameters) 
     { 

      $check=0; 
      if ((count($requestData) >= count($parameters)) 
      { 
       $check=0; 
       foreach ($requestData as $key=>$value) 
       { 
        if (in_array($key,$parameters, TRUE)) 
        { 
         $check=1; 
         unset($parameters[array_search($key,$parameters)]); 
        } 
        else 
        { 
          return 0; 
        } 
       } 
      } 
      if($check) 
      { 
       if (count($parameters) == 0) 
       { 
        return 1; 
       } 
       else 
       { 
        return 0; 
       } 
      } 
      else 
      { 
       return 0; 
      } 
     } 

Возврат 1 предназначен для продолжения, а 0 - некоторая ошибка.

0

Используйте функцию ниже, чтобы проверить все параметры для проверки и работает со всеми типами методов запроса (put/post/get/...). param должен быть массивом таких полей, как: $ required_fields = array ('field_1', 'field_2');

function verifyRequiredParams($required_fields) { 
    $error = false; 
    $error_fields = ""; 
    $request_params = array(); 
    $request_params = $_REQUEST; 
    // Handling PUT request params 
    if ($_SERVER['REQUEST_METHOD'] == 'PUT') { 
     $app = \Slim\Slim::getInstance(); 
     parse_str($app->request()->getBody(), $request_params); 
    } 
    foreach ($required_fields as $field) { 
     if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) { 
      $error = true; 
      $error_fields .= $field . ', '; 
     } 
    } 

    if ($error) { 
     // Required field(s) are missing or empty 
     // echo error json and stop the app 
     $response = array(); 
     $app = \Slim\Slim::getInstance(); 
     $response["error"] = true; 
     $response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty'; 
     echoResponse(400, $response); 
     $app->stop(); 
    } 
} 
Смежные вопросы