2011-07-18 12 views
3

3番目のURLセグメントを関数のパラメータに直接渡すことができることを知り、私は以下のことを行いました。URLセグメントがない場合のCodeigniter

URL例:profileコントローラで

http://www.mysite.com/profile/user/64

機能:FALSE $this->uri->segment(3)リターンを使用

function user($user_id) //$user_id is 3rd URL segment 
{ 
    //get data for user with id = $user_id 
} 

にはセグメントが存在しないです。関数のパラメータで、私は

欠落引数1

にはどうすればFALSEを返し、第三URLセグメントが欠落している場合、関数を実行することはできません取得しますか?可能であれば、if文なしの簡単な解決策を探しています。関数は、引数を取得していないので、あなたは、「引数1がありません」取得

function user($user_id = FALSE) //$user_id is 3rd URL segment 
{ 
    //get data for user with id = $user_id 
} 
+0

は、 '(2)'ます$ this-> uri->セグメントを試してみてください。私はCodeIgniterを使用していませんが、URIセグメントのインデックスは0から始まると思います。 –

+0

@wtp - CIセグメントはインデックスの後に開始されるか、htaccessを使用してドメインの後のインデックスを削除する(CIインデックスがドミノのルートにあると仮定します)この例では1から数えて3が正しいです。 FYI – BrandonS

+0

@BrandonS大丈夫、悪い。 :) –

答えて

3

function user(){ 
    if($this->uri->segment(3)){ 
     //get data for user with id = $this->uri->segment(3) 
    } 
} 
+0

ありがとう!だから、クエリが実行される前にFALSEを返す必要がありますか? codeigniterを使用すると、実際には3番目のセグメントはuser_id – CyberJunkie

+0

です。私は別のことを考えていた。 – cwallenpoole

+1

user_idが定義されていない場合は、デフォルトでFALSEになります。定義されている場合は、代わりにその値になります。 – cwallenpoole

4

:デフォルト引数について何

2

をお試しくださいまた、これを使用することもできます。

public function user($id = null) 
{ 
    if(!isset($id)) 
    exit(); 

    // get data for user with id = $id 
} 

またはこの

public function user() 
{ 
    if(! $this->uri->segment(3)) 
    exit(); 

    // get data for user with id = $id 
} 
関連する問題