목록내가 자꾸 까먹어서 쓰는 개발 이야기/Laravel (14)
FILife
https://github.com/finaleaf/vue-sfc-scaffolding finaleaf/vue-sfc-scaffolding Contribute to finaleaf/vue-sfc-scaffolding development by creating an account on GitHub. github.com composer와 npm은 미리 설치한다. webpack.mix.js 파일에 작성해둔 내용이 있다면 백업 해 둔다. 프로젝트 디렉토리에 들어가서 아래와 같이 installer.sh 파일을 실행한다. wget https://raw.githubusercontent.com/finaleaf/vue-sfc-scaffolding/master/installer.sh && chmod +x installer...
라라벨 doc에도 나와있지만, 이해가 잘 안가서 겁나 헤매다 쓴다. 알다시피 Eloquent의 강력한 기능 중 하나는 relation 일것이다. 1:1 또는 1:n 관계 까지는 별 문제가 없었는데, 연결된 테이블과 연결된 테이블을 가져오는것이 어려웠다. 이런 경우 사용되는 메서드는 hasOneThrough, hasManyThrough, belongsToThrough 등이 있는데, 이것을 기록하려 한다. 먼저 테이블 구조는, 1. 카테고리 테이블 category (Model: Category) id INT, NN, AI, UQ name VARCHAR color VARCHAR created_at DATETIME 2. 카테고리와 상품을 연결하는 category_items (Model: CategoryItems..
기본적으로 라라벨은 위 커맨드 실행 시 app/ 디렉토리 아래 바로 model 파일을 생성한다. 개인적으로 용납할 수 없다. app/Models 아래에 model 파일을 생성하려면 php artisan make:model Models/ModelName 과 같이 해야 했는데, 아래와 같은 방법으로 해결 가능하다. 먼저 php artisan make:command ModelMakeCommand 를 실행해서 console command를 생성한다. 해당 파일의 내용을 아래 내용으로 덮어씌워, 프레임웍의 command를 override 시켜준다.
참고1. https://github.com/appstract/laravel-blade-directives참고2. https://github.com/duncan3dc/blade blade template을 쓰다 보면, 레이아웃 내에 준비한 scripts나 styles 섹션에 각 태그를 넣어주는 일은 무척 귀찮다. @js(), @css() 와 같이 해결하려고 시도 해 봤다. 먼저 Providers/AppServiceProvider.php 에 아래와 같이 내용을 추가한다. public function boot() { Blade::directive('css', function ($css) { return ''; }); Blade::directive('js', function ($js) { return ''; }..
Facade를 생성하여 적용하는 방법은 이곳에 있다. https://hdtuto.com/article/laravel-55-create-custom-facade-example-from-scratch 요약하자면 사용할 클래스를 생성한다. (경로 무관, namespace 필요, 상속 불필요)php artisan make:provider 커맨드로 provider를 생성한다.provider의 register() 메서드에서는 물론 1에서 생성한 클래스를 returnapp/Facades 디렉토리에 1과 같은 이름으로 Facade 클래스 파일을 생성.config/app.php 의 provider와 aliases 배열에 생성한 것들을 추가해준다.composer dumpautoload 커맨드를 실행하면 Facade를 사용..
이런게 있다는걸 이제야 알았다. 심지어 5.4 이전 버전에서도 exlixir 라는 이름으로 존재했었다고 한다. 애초에 composer require를 통해 laravel을 설치했으니 그럴만도 하다. 기존 프로젝트에 npm i -S laravel-mix 를 할수도 있지만, 그 부분은 알아서 응용하는걸로... ~ 우분투 18.04, node와 npm 설치 된 것으로 가정 ~ 우선 OS에 laravel installer를 설치해준다. composer require global "laravel/installer" 다음으로 laravel 커맨드를 실행하기 위해 installer 커맨드의 PATH를 잡아줘야 한다. ~/.bashrc 를 열어 아래와 같이 PATH를 추가 해 준다. PATH=$PATH:~/.confi..
https://github.com/laravel/framework/pull/25408#issuecomment-418123476 보안 관련 문제로 인해 블레이드 템플릿의 @lang 지시어가 패치되었다고 한다. 기존에는 @lang("main.welcome") 과 같이 사용하면 다국어 설정의 HTML 태그들이 렌더되어 출력되었는데, 최근 버전(정확한 버전은 모르고 개인적으로 5.5.42 부터 확인했음)에서는 태그들이 그대로 출력된다. XSS 관련 이슈이며, 이후에도 롤백되지 않을것이라고 한다. 대안은 trans(or __) 함수로, {!! __("main.welcome") !!} 와 같이 사용해야 한다. 새로 배포한 사이트 메인에 태그가 다 보여서 개당황... @lang으로 HTML포함된 문자열을 많이 가지고..
총 3개의 플러그인을 써봤다. 플러그인 1(https://github.com/srmklive/laravel-paypal)은 사용이 간단하나, 배송비 설정을 할 수 없었다. 플러그인 2(https://github.com/anouarabdsslm/laravel-paypalpayment)는 배송비 설정은 가능하지만 결제창의 로고 또는 브랜드명을 설정할 수 없었다. 그래서 찾은것이 https://github.com/escuccim/laravel-paypal 배송비와 로고 설정 모두 가능하다. 다만 PHPStorm에서 자동완성이 좀 어설프므로 예제코드를 보고 따라 쳐야 한다. 추가로 brandname이나 logo를 설정하려면, 예제코드의 createWebProfile 을 통해 생성된 profile id를 Payp..
https://github.com/spatie/laravel-newsletter 이걸 쓰려고 했다. 설명대로 했는데 계속 Undefined class 또는, Non static method 라면서 철벽을 쳐댔다. 일단 설명대로 설치부터 해준다. composer require spatie/laravel-newsletter php artisan vendor:publish --provider="Spatie\Newsletter\NewsletterServiceProvider" 두번째의 경우는 했는데 config 파일이 생성되지 않았다. .env 파일에 직접 추가하기로 했다. MAILCHIMP_APIKEY= MAILCHIMP_LIST_ID=config/newsletter.php 파일은 아래 내용을 복사하여 직접 추..
삽질하다 다음번엔 하기 싫어서 남김. 일단 .evn 파일을 열어 메일 계정을 셋팅한다. MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME= MAIL_PASSWORD= MAIL_ENCRYPTION=tls 셋팅을 마치면 메일을 보낼 메서드에 아래와 같이 작성한다. \Mail::send([], $data, function ($message) { $message->to("to@e.mail", "to_name") ->from("from@e.mail", "from_name) ->subject("message_title") ->setBody("message body bla bla bla", "text/html;charset=utf-8"); }..
https://github.com/capistrano/composer 위 url로 접속해보면 capistrano의 composer 플러그인이 있다. 우리는 capistrano를 설치하느라 ruby gems가 설치되어 있으므로(?) 간단히 커맨드를 입력하여 설치해보자. $ gem install capistrano-composer{배포할_프로젝트_디렉토리}/capistrano/Gemfile 을 선호하는 에디터로 열어 다음 줄을 추가한다. require 'capistrano/composer' 프로젝트 내의 bootstrap/cache/.gitignore 파일을 저장소에 추가해 둔다. (해당 경로가 없으면 오류가 난다.) {배포할_프로젝트_디렉토리}/capistrano/config/deploy.rb 파일에 아래..
기본적으로 Laravel doc(https://laravel.kr/docs/5.3/passport)를 따라했다. 1. '설치하기' 파트는 기본적으로 동일하나, Laravel 5.4가 나오면서 passport가 2.0.x로 업데이트 되었으므로, 버전을 지정해준다. (https://laravel.com/docs/5.3/passport#installation) composer require laravel/passport=~1.0 하는김에 Laravel을 5.4로 업데이트 해버릴까 싶어 시도해봤는데 아래와같은 에러를 해결하지 못해 우선 보류했다. Call to undefined method Illuminate\Foundation\Application::share() (제보바람) 2. '빠른 프론트엔드 시작하기'..
이 망할 것 때문에 이틀 이상을 허비하였으므로 더러운 삽질의 기록을 남긴다. 기본적으로 Laravel의 인증은 users 테이블, email (or username), password 의 조합을 사용한다. 이것을 site_user 테이블, user_id, user_password 필드로 바꿔본다. 1. artisan으로 auth scaffolding을 생성한다. 1php artisan make:authcs 2. app/Http/Controllers/Auth/LoginController.php 에 username 메서드들을 추가 해 준다. (phpstorm의 경우 alt + insert 후 Override method 를 선택하면 목록에 있다.) 12345678910111213141516171819202122
Laravel 설치- Laravel 인스톨러로 설치 시 의존성 오류가 발생하여 composer로 설치했다. $ composer create-project --prefer-dist laravel/laravel my_project nginx 설정- 방금 생성 된 프로젝트 디렉토리의 public/ 디렉토리를 root로 잡아준다.- $ sudo service nginx restart storage, bootstrap/cache의 권한을 설정 해 준다.$ sudo chown www-data. ./storage -R$ sudo chmod 707 ./storage -R$ sudo chown www-data. ./bootstrap/cache -R$ sudo chmod 707 ./bootstrap/cache -Rappl..