2011-06-09 45 views
1

我在我的MVC中清理我的「註冊」方法時發現自己處於灰色地帶。MVC:僅用於用戶註冊的變量。放置在控制器助手或模型中?

快速背景:我創建了與特定任務關聯的值的數組。 例如:

$field_arr //array of all the values from the register-form. 
$user_arr //array of values needed to create a new user. 
$required_arr //array of all values that are required for sign up. 
$values_arr //array that holds all the values for the items in the multiple arrays. 

等...等...

起初我開始只是通過在控制器將變量聲明/人口的這些塊在輔助函數重組我的代碼,其中, 「Register」控制器方法只會在程序開始時調用。

但是隨後一個開關在我腦海中消失了。

由於此信息涉及 用戶模型不應該只是放在 在用戶模式?

但後來我的腦海的另一邊又回來了。

是的,這確實涉及,但僅用於 註冊,因此是 只有在控制器用武之地了。

我腦袋哪邊不對?任何指導將非常有幫助和讚賞。 謝謝。

回答

1

我會在您的用戶模型中創建一個register方法,並將所需的信息從控制器傳遞給它,因爲這是處理用戶輸入的應用程序的一部分。重複使用模型往往比重用控制器更容易發生,因此通過這樣做可以在將來的項目中爲您節省一些時間(只需複製您的用戶模型)。

另一個好處是您現在可以使用此註冊邏輯您的應用程序中有多個點。當然,用戶註冊並不是最好的例子,但我希望你能看到這在其他情況下是如何有用的。

當我發現自己處於類似的情況時,我想記住的一個短語是「Skinny controller,fat model」。儘量保持你的控制器苗條,並隨時加強這些模型! :)

編輯:下面是一些僞代碼,以幫助解釋一下我的意思是......

class RegistrationController { 
    function register() { 
     // Sanitizing your data here would be a good idea 
     $fieldArr = $_POST['data_from_your_form']; 

     $user = new User(); 
     $result = $user->register($fieldArr); 

     if ($result) { 
      // User successfully reg'd 
     } else { 
      // Oops! Problem registering user 
     } 
    } 
} 
+0

感謝您的答覆。我現在會更多地閱讀關於「胖模特」的文章。 (上帝我愛這句話)。 – 2011-06-10 00:05:12

+0

再次感謝。我的頭現在更清晰一點。 – 2011-06-10 00:13:35

+0

第三個「再次感謝」?你一定真的把我從邏輯偏頭痛中救了出來。我的代碼也感謝你。 – 2011-06-10 00:36:13

相關問題