# 開發範例相關

## 後台欄目列表增刪查改

### A. 前置作業
組內開發同事需要先行定義有功能的名稱與程式中的命名空間，例如:

上層選單中文名稱: 動物園管理
上層選單英文名稱: zooManagement
下層選單中文名稱: 老虎管理
下層選單英文名稱: tigerManagement

因此整個範例的命名如下(或參照後續介紹):

1. 下層選單路由: 上層選單英文名稱/下層選單英文名稱
2. 資料表名稱: 上層選單英文名稱_下層選單英文名稱

需要先以瀏覽器登入後台

System ManagementManage Functions > Add >

1. Menu Icon Class Name: fa fa-cog
2. Menu Name: 動物園管理
3. Valid: 打勾
4. Orders: 任意給一個數字

System ManagementManage Functions > 動物園管理 > Details > Add >

1. Function Name: 老虎管理
2. Function Link(Route or Controller Name): zooManagement/tigerManagement
3. Function Description: 任意給定一個敘述
4. Valid: 打勾
5. Orders: 任意給一個數字

System ManagementManage Groups > 選定自己所屬群組(或新增) > Edit >

1. Functions > Unassign > 選擇老虎管理 > 按下 Enter > 老虎管理落入 Assigned

### B. 資料表
先利用 phpmyadmin 或者開發環境的指令介面創建範例資料表，注意命名規則:

```
CREATE TABLE `ringeProject`.`zooManagement_tigerManagement` (
	`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '自增量' ,
	`tigerName` VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '老虎名字',
	PRIMARY KEY (`id`)
)
ENGINE = MyISAM
CHARSET = utf8 COLLATE utf8_unicode_ci
COMMENT = '動物園管理_老虎管理';
```

創建 model 檔案，請參照 app/Models/ZooManagement/TigerManagement.php 這隻檔案

### C. 實際開發
需要因此新增或修改的檔案如下(請注意命名方式):

1. 新增 app/Models/ZooManagement/TigerManagement.php 也就是剛才提到的 model
2. 修改 routes/web.php 需要加入相關的路由，注意裡面註解的範例部分，負責路由
3. 新增 app/Http/Controllers/Backend/ZooManagement/TigerManagementController.php 注意裡面的所有註解，負責控制器
4. 新增 app/Http/Services/Backend/ZooManagement/TigerManagementService.php 注意裡面的所有註解，負責業務邏輯
5. 新增 resources/views/admin/ZooManagement/TigerManagement.blade.php 注意裡面的所有註解，負責列表頁
6. 新增 resources/views/admin/ZooManagement/TigerManagementEdit.blade.php 注意裡面的所有註解，負責新增或編輯頁

### D. 注意事項

1. 網址路由中的大小寫，可能會因為佈署環境的關係(例如 Windows 系統)導致大小寫被視為相同而失效，屆時的調整方向可以從伺服器作業系統設定，或者修改本地程式碼入手。

## 腳本

### A. 實際開發
需要因此新增或修改的檔案如下(請注意命名方式):

1. 修改 app/Console/Kernel.php 需要加入相關的路由，注意裡面註解的範例部分，負責路由
2. 新增 app/Console/Commands/Lion.php 負責腳本本身

### B. 除錯
請確認已做好佈署文件中的除錯設定，並且視情況修改以下的指令並執行

cd /var/www/html/ringeProject # 切換到專案資料夾

export XDEBUG_CONFIG="idekey=PHPSTORM remote_host=127.0.0.1 remote_port=7900" # 設置除錯變量

export PHP_IDE_CONFIG="serverName=ringeProject" # 設置除錯變量

php artisan zoo:lion # 啟動腳本

### C. 佈署
crontab -e # 編輯排程表加入以下指令(並視情況修改執行時間點，專案資料夾，重導向紀錄內容的位置)

```
* * * * * cd /var/www/html/ringeProject;php artisan zoo:lion > /tmp/test.log;
```

/etc/init.d/cron restart # 重啟排程服務

