Jinput에 대한 필터를 만드는 방법은 무엇입니까?


9

나는 끝까지 갈 JInput 문서 .

다음과 같이 JInput 객체에 액세스 할 수 있습니다 :

JFactory::getApplication()->input;

더 많은 값을 검색하는 경우 JInput 객체를 변수에 저장하면 매번 호출 할 필요가 없습니다 JFactory::getApplication().

$jinput = JFactory::getApplication()->input;

JInput에서 값을 검색하려면 get 메소드를 사용해야합니다.

$data = $jinput->get('varname', 'default_value', 'filter');

보시다시피 3 개의 매개 변수가 있습니다.

  1. 변수 이름
  2. 기본값 (기본값은 null)
  3. 필터 이름 (기본값은 cmd)

그리고 여기 3 번째 파라미터에 관한 질문이 있습니다.

자신 만의 필터를 만들려면 어떻게해야 Jinput합니까? 예를 들어 전화 번호 나 IP 주소의 유효성을 검사해야하는 경우 어떻게 자신 만의 필터를 만들 수 있습니까?


1
나를 위해 이것은 지금까지 '올해의 질문'입니다 ... +1
Lodder

나도, +
1-

답변:


2

이것은 매우 간단합니다

먼저 class JinputTelephone원하는 // 와 같은 사용자 지정 Jinput 클래스를 만듭니다 .

아마도 / libraries / joomla / input 아래의 기존 입력 필터 클래스를 살펴보십시오.

// 원하는대로 getter 및 filterMethod를 수정하십시오.

/**
 * Gets a value from the input data.
 *
 * @param   string  $name     Name of the value to get.
 * @param   mixed   $default  Default value to return if variable does not exist.
 * @param   string  $filter   Filter to apply to the value.
 *
 * @return  mixed  The filtered input value.
 *
 * @since   11.1
 */
public function get($name, $default = null, $filter = 'cmd')
{
    if('phonyfilter'=== $filter){ 
    // here we ca got with static filter classes like for formvalidation  or 
    }        
    elseif (isset($this->data[$name]))
    {
        return $this->filter->clean($this->data[$name], $filter);
    }

    return $default;
}

// 사용법

$phoneInput = new JinputTelephone();
$phoneInput->get('anPhoneNumber','0040','phonyfilter');

//이 메소드를 사용하면 일반 입력 처리를 사용할 수도 있습니다. // JApplication 입력과 함께 사용할 수는 없습니다.

다른 해결 방법은 여러 가지가 있습니다. 다른 솔루션 $ data = MyFilter :: SanitizeNumber ($ jinput-> get ( 'varname', 'default_value', 'raw'));

도움이 되나요?


1

내 시도,

나는 당신이 joomla에 약간의 경험을 가지고 있음을 알기 때문에 단지 몇 센트를 넣을 것입니다.

  1. 시스템 플러그인을 만들어야합니다
  2. init 또는 유사한 후에 메소드를 작성해야합니다.
  3. 이제 JLoader내가 틀리지 않으면 시작 하고 라이브러리에 경로를 추가해야합니다./plugins/system/myplugin/libraries/newfilter.php
  4. 플러그인과 이익을 가능하게한다; )

추신. 이 방법으로 너무 줌라 코어 라이브러리 및 플랫폼을 대체 할 수 있습니다. 인증서와 같은 컬 SSL 문제; )

문안 인사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.