PHP로 OOP를 머리에 감싸고 있고 꽤 잘 잡히지 만,이 코드는 내가 옳다고 생각하지 않습니다. 나에게 도움이 필요해. 대부분의 코드는 로그인 시스템 구축에 대한 자습서에 있습니다. 이 자습서에서 제공되는 코드는 HTML 페이지의 맨 위에 오류를 표시합니다. 오류가 발생하는 양식 필드 옆에 오류를 표시하는 것이 더 사용자 친화적 인 것으로 생각하여 작동하는 추가 코드를 작성했지만 무거워 보입니다. 그것을 밝게하는 방법에 대한 몇 가지 제안을하고 싶습니다. 클래스의 이름은 유효성 검사이며 메서드는 등록 양식에서 호출됩니다. 전체 수업을 게시해야할지 모르겠으므로 함께 작업하는 섹션을 게시 할 예정입니다. 다음은 오류 배열을 만드는 메서드입니다.다차원 배열을 만들지 않고이 코드를 키 값으로 가져 오는 방법
private function addError($error)
{
$this->_errors[] = $error;
}
public function errors()
{
return $this->_errors;
}
다음은 페이지 맨 위에 오류를 표시하는 배열을 채우는 오류 코드의 한 줄입니다. 이 블록 내에서 addError()
메서드 호출 내의 $item
은 오류를 생성 한 필드 이름입니다. 여기
if($rule === 'required' && empty($value))
{
$this->addError("$item field is required."));
}
내가 코드를 변경하는 방법 그래서 나는 $item
값이 배열의 장소로 얻을 수있다. 그러나 이것은 mutlidimensional 배열을 만들어서 여러 레이어를 반복하여 $item
키로 이동해야합니다.
if($rule === 'required' && empty($value))
{
$this->addError(array($item=>"This field is required.")); //item is going to equal field name you can change this in the registration file
}
여기는 배열을 반복하는 방법이며 내가 좋아하지 않는 방법입니다.
public function frm_errors($item)
{
$errors = array($this->errors());
foreach($errors as $error => $error_value)
{
foreach($error_value as $field_error => $field_error_values)
{
foreach($field_error_values as $field_error_value => $value)
{
if(array_key_exists($item, $field_error_values))
{
echo $value;
}
}
}
}
}
다음은 등록 양식의 메소드 호출입니다.
<input type="text" name="username" id="username" value="<?php echo Input::get('username'); ?>" autocomplete="off"><br />
<?php echo "<p class='error'>" . $validation->frm_errors('username') . "</p>"; ?>
어떤 도움을 주시면 감사하겠습니다.
다음은 필드 이름이 추가 된 배열입니다.
Array
(
[0] => Array
(
[username] => This field is required.
)
[1] => Array
(
[email] => This field is required.
)
[2] => Array
(
[password] => This field is required.
)
[3] => Array
(
[pwrd_again] => This field is required.
)
[4] => Array
(
[name] => This field is required.
)
)
그리고 여기가 내가 매개 변수 $ 항목이 오류가있을 수 있습니다 필드의 이름이라고 가정와 같은 addError 방법으로 호출
Array
(
[0] => username must contain at least 5 characters's.
[1] => This field is required.
[2] => This field is required.
[3] => This field is required.
[4] => This field is required.
)
당신이'원하는 $ item' 키로서 사용되는 경우, 단지'통과 $ item' 및 addError''에 _two_ 매개 변수로 메시지, 거기에'$ this -> _ errors [$ item] = $ message; '를 사용하십시오. (항목에 대해 둘 이상있을 수있는 경우 항목에 대한 모든 이전 오류 메시지를 덮어 씁니다.) – CBroe
예 하나 이상의 오류가있을 수 있습니다. 일부 $ 항목은 고유하며 최소값/최대 값을가집니다. – Traveltech
그럼'$ this -> _ errors [$ item]'을 새로운 메시지를 추가하는 배열로 만드십시오. 그러면 나중에 각 항목에 대한 메시지를 반복 할 수 있습니다. – CBroe