목록Framework/Laravel (11)
처음부터 차근차근
라라벨을 배포할 때 생각지 못했던 문제가 생겼다. 모든 url에 '/public'이 붙는 문제이다. 구글링을 해봤더니 나만 이렇게 되는게 아니라 많은 사람이 라라벨을 배포할 때 '/public' 이 붙어서 이걸 없애는 방법을 찾았다. 이결 해결하려고 다양한 시도를 해봤었다. 많은 시도 끝에 그 중 성공한 방법이 public 폴더 자체를 없애고 그 안에 있는 파일들을 전부 루트 위치에 놓는 것이다. 하지만 이렇게 해봤을 때 url에서 /public이 사라지긴 했는데 프로젝트 전체적인 구조가 망가지는 방법이어서 이건 아니다 싶어 새로운 방법을 찾아봤다. stackover flow에서 좋은 해답을 찾을 수 있었다. Laravel 5 – Remove Public from URL I know this is a v..

아임포트 https://www.iamport.kr/ 온라인 비즈니스의 모든 결제를 한곳에서, 아임포트 결제의 시작부터 비즈니스의 성장까지 아임포트와 함께하세요 www.iamport.kr 아임포트(iamport)는 국내 PG결제 연동을 쉽게해주는 결제 API 이다. 여기서 PG란 Payment gateway의 약자인데, 신용카드사와 직접 계약하기 어려운 온라인 쇼핑몰을 대신해 결제와 정산 업무를 대행해 주는 업체이다. 그래서 PG사와 계약을 하면 카드결제, 휴대폰 결제, 계좌이체, 무통장입금 등 다양한 결제 수단을 쇼핑몰 방문 고객에게 제공할 수 있다. 아임포트를 사용하기 전과 후 결제 요청 과정의 차이는 아래와 같다. 아임포트를 사용하지 않으면 쇼핑몰 서버에서 직접 PG사에 결제 요청을 해야한다. 아임포..

라라벨은 내장된 도구 세트가 있기 때문에 websocket을 사용하기 매우 쉽다. 생성된 이벤트를 웹소켓 서버로 브로드캐스트 해야한다. 브로드캐스팅(broadcasting)은 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식이다. pusher 세팅 브로드캐스트를 이용하려면 composer package인 pusher을 가져와야 한다. 터미널을 켜고 프로젝트 파일 경로 안에서 아래의 명령어를 친다. composer require pusher/pusher-php-server pusher가 잘 깔렸는지 확인하려면 /composer.lock 폴더로 가서 'pusher'을 검색해본다. 그럼 이렇게 pusher가 잘 깔린 것을 확인할 수 있다. 그 다음 pusher.com으로 가서 로그인..

개발을 하다가 conroller 부분에 계속 중복되는 코드가 생겨서 어떻게 처리해야될까 고민했었다. 그래서 아예 클래스를 새로 만들어서 중복되는 코드를 함수화 시켜서 넣고, 그 클래스를 상속받아 안에있는 함수를 꺼내서 쓰기로 했다. 라라벨에서 만든 컨트롤러는 'Contorller'라는 이름을 가진 컨트롤러를 상속한다. 그래서 이 컨트롤러(Conroller) 안에다 함수를 집어넣고 새로 만든 컨트롤러로 가서 함수를 사용하면된다. 예시를 통한 사용 방법 1. Controller에다 함수를 집어넣는다. class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; public function ..

라라벨로 개발하면서 편리했던 기능 중 하나가 페이지네이션이다. 라라벨은 페이지네이션 기능을 사용하기 아주 쉽게 미리 만들어놨다. 짧게는 코드 2줄 만으로도 페이지네이션을 구현할 수 있다. 사용 방법 기본적으로 라라벨의 paginator에서 생성된 HTML은 Tailwind CSS 프레임워크와 호환된다. 그러나 부트스트랩 페이지네이션 지원되기 때문에 부트스트랩을 이용한 페이지네이션을 만들었다. 1. 페이지를 매길 쿼리 마지막에다가 ->get() 대신 '->paginate(페이지 표시하려는 항목 수)'를 쓴다. DB::table('goods') ->orderby('id', 'asc') ->paginate(3); 2. 부트스트랩과 호환하기 위해 App \ Providers \ AppServiceProvider..
데이터베이스의 테이블은 테이블끼리 서로 관련되어 있다. 예를 들어 일대일, 일대다, 다대다 관계등이 있다. 모델관의 관계를 사용한다면 코드를 좀 더 간결하고 알아보기 쉽게 짤 수 있다. 일대일 User 모델 public function phone() { return $this->hasOne('App\Models\Phone'); } controller $books = App\Models\User::find(1)->phone; id가 1인 user의 phone을 구하기 일대다 User 모델 public function books() { return $this->hasMany('App\Model\Book'); // Book모델(books 테이블)과 일대다 관계 } controller //$books = Boo..

Form validation form validation은 안전을 위해 프론트쪽에서 한 번 거르고, 서버 측에서 한 번 더 거르는게 좋다. 왜냐하면 먼저 프론트에서 bootstrap 같은 라이브러리를 이용해 내용의 유효성을 검사해도, 사용자가 개발자 모드를 켜서 input text에 있는 required를 지우면 프론트에서의 유효성 검사는 뚫리게 되기 때문이다. 1. bootstrap을 이용해 유효성 검사를 한다. 2. 서버 측에서 하는 유효성 검사를 한다. 라라벨에서는 유효성 검사하는 기능을 제공한다. controller의 유효성 검사할 함수 public function store(Request $request) { // 유효성 검사 request()->validate([ 'title'=>'requir..
패키지 다운로드 프로젝트 파일에서 npm install을 하면 package.json의 devDependencies에 있는 패키지들을 설치 할 수 있다. webpack.mix.js에서 코드를 작성하면 css파일이나 js파일을 컴파일하여 사용할 수 있다. webpack.mix.js에 적혀있는 css or js 컴파일 하는 코드 npm run dev resource 폴더 안에 있는 css파일 js 파일이 컴파일 되면 public 폴더 밑에 새로 파일이 생긴다. 파일 명명 규칙 controller : 맨 앞 문자 대문자로, 단수형 ex) BookController model : 맨 앞 문자 대문자로, 단수형 ex) Book table : 복수형 ex) books migration : 날짜(자동으로 정해줌)_c..